const CategoryService = require("../services/CategoryService"); class CategoryController { index(req, res) { res.render("categories/index", { title: "Categorieën", categories: CategoryService.getCategories(req.user.household_id) }); } editForm(req, res) { const categoryId = Number.parseInt(req.params.id, 10); const category = Number.isInteger(categoryId) ? CategoryService.getCategory(categoryId, req.user.household_id) : null; if (!category) { req.flash("error", "Categorie niet gevonden."); return res.redirect("/categories"); } res.render("categories/edit", { title: "Categorie wijzigen", category }); } create(req, res) { const name = (req.body.name || "").trim(); const icon = (req.body.icon || "").trim(); if (!name) { req.flash("error", "Geef een categorienaam op."); return res.redirect("/categories"); } CategoryService.createCategory({ name, icon, household_id: req.user.household_id }); req.flash("success", "Categorie toegevoegd."); res.redirect("/categories"); } update(req, res) { const categoryId = Number.parseInt(req.params.id, 10); const name = (req.body.name || "").trim(); const icon = (req.body.icon || "").trim(); if (!Number.isInteger(categoryId) || !name) { req.flash("error", "Geef een geldige categorienaam op."); return res.redirect("/categories"); } const result = CategoryService.updateCategory(categoryId, req.user.household_id, { name, icon }); if (result.changes === 0) { req.flash("error", "Categorie niet gevonden."); return res.redirect("/categories"); } req.flash("success", "Categorie gewijzigd."); res.redirect("/categories"); } remove(req, res) { const categoryId = Number.parseInt(req.params.id, 10); if (!Number.isInteger(categoryId)) { req.flash("error", "Categorie niet gevonden."); return res.redirect("/categories"); } if (CategoryService.categoryHasProducts(categoryId, req.user.household_id)) { req.flash( "error", "Deze categorie is nog aan producten gekoppeld en kan niet worden verwijderd." ); return res.redirect("/categories"); } const result = CategoryService.deleteCategory(categoryId, req.user.household_id); if (result.changes === 0) { req.flash("error", "Categorie niet gevonden."); return res.redirect("/categories"); } req.flash("success", "Categorie verwijderd."); res.redirect("/categories"); } } module.exports = new CategoryController();