// pages/api/admin/categories/create.js
import { apiHandler, db } from "@/helpers/api";

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

async function createCategory(req, res) {
	const userID = req.userID;
	const { name, slug, parentID, title, description, keywords } = 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 (!name || !slug) {
			return res.status(400).json({ error: "Nume și slug sunt obligatorii!" });
		}

		// Verifică dacă slug-ul există deja
		const existingCategory = await db.Categories.findOne({
			where: { slug: slug },
		});

		if (existingCategory) {
			return res.status(400).json({ error: "Slug-ul există deja!" });
		}

		// Verifică dacă parentID este valid
		if (parentID) {
			const parentCategory = await db.Categories.findByPk(parentID);
			if (!parentCategory) {
				return res.status(400).json({ error: "Categoria părinte nu există!" });
			}
		}

		const newCategory = await db.Categories.create({
			name,
			slug,
			parentID: parentID || null,
			title: title || null,
			description: description || null,
			keywords: keywords || null,
		});

		return res.status(201).json({
			message: "Categoria a fost creată cu succes!",
			category: newCategory,
		});
	} catch (error) {
		console.error("Eroare la crearea categoriei:", error);
		return res.status(500).json({ error: "Eroare la crearea categoriei" });
	}
}
