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

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

async function updateOrderStatus(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
		const validStatuses = ['pending', 'paid', 'processing', 'shipped', 'delivered', 'cancelled', 'refunded'];
		
		if (!validStatuses.includes(status)) {
			return res.status(400).json({ error: "Status invalid!" });
		}

		const order = await db.Orders.findByPk(id);

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

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

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