104 lines
2.7 KiB
JavaScript
104 lines
2.7 KiB
JavaScript
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();
|