Versie 1.0

This commit is contained in:
2026-08-09 19:03:26 +02:00
parent c70293405f
commit f3da7dfb8d
18 changed files with 877 additions and 3 deletions
+103
View File
@@ -0,0 +1,103 @@
const CategoryService = require("../services/CategoryService");
class CategoryController {
index(req, res) {
res.render("categories/index", {
title: "Categorieën",
categories: CategoryService.getCategories()
});
}
editForm(req, res) {
const categoryId = Number.parseInt(req.params.id, 10);
const category = Number.isInteger(categoryId)
? CategoryService.getCategory(categoryId)
: 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 });
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, { 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.flash(
"error",
"Deze categorie is nog aan producten gekoppeld en kan niet worden verwijderd."
);
return res.redirect("/categories");
}
const result = CategoryService.deleteCategory(categoryId);
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();