// pages/api/admin/returns/update-status.js
import { apiHandler, db } from "@/helpers/api";

export default apiHandler({
	post: updateReturnStatus,
});

async function updateReturnStatus(req, res) {
	const userID = req.userID;
	const { id, status } = req.body;

	if (!db.initialized) await db.initialize();

	try {
		const userData = await db.User.findByPk(userID);

		if (!userData) return res.status(404).json({ error: "Unknown!" });

		if (userData.admin < 1) {
			return res.status(401).json({ error: "Unauthorized access." });
		}

		if (!id || !status) {
			return res.status(400).json({ error: "ID și status sunt obligatorii!" });
		}

		// Statusuri valide pentru retururi
		const validStatuses = ['pending', 'approved', 'rejected', 'processing', 'completed'];
		
		if (!validStatuses.includes(status)) {
			return res.status(400).json({ error: "Status invalid!" });
		}

		const returnRecord = await db.Returns.findByPk(id);

		if (!returnRecord) {
			return res.status(404).json({ error: "Returul nu există!" });
		}

		await returnRecord.update({
			status: status,
			updatedAt: new Date()
		});

		return res.status(200).json({
			message: "Statusul returului a fost actualizat cu succes!",
			return: {
				id: returnRecord.id,
				status: returnRecord.status,
				updatedAt: returnRecord.updatedAt
			}
		});
	} catch (error) {
		console.error("Eroare la actualizarea statusului returului:", error);
		return res.status(500).json({ error: "Eroare la actualizarea statusului returului" });
	}
}