Favorieten toegevoegd aan de navigatiebalk en sidebar.

This commit is contained in:
2026-08-29 19:53:28 +02:00
parent 2912f7c455
commit ce07575d5e
19 changed files with 355 additions and 29 deletions
+51
View File
@@ -0,0 +1,51 @@
const FavoriteService = require("../services/FavoriteService");
class FavoriteController {
index(req, res) {
const favorites = FavoriteService.getFavorites(req.user.id, req.user.household_id);
res.locals.title = "Favorieten";
res.render("favorites/index", {
favorites,
user: req.user
});
}
toggle(req, res) {
const productId = Number.parseInt(req.params.id, 10);
if (!Number.isInteger(productId)) {
req.flash("error", "Product niet gevonden.");
return res.redirect("/products");
}
const isFavorite = FavoriteService.toggleFavorite(req.user.id, productId, req.user.household_id);
if (!isFavorite && !FavoriteService.getFavoriteIds(req.user.id, req.user.household_id).has(productId)) {
req.flash("error", "Product niet gevonden.");
return res.redirect("/products");
}
req.flash("success", isFavorite ? "Product toegevoegd aan favorieten." : "Product verwijderd uit favorieten.");
res.redirect("/products");
}
remove(req, res) {
const productId = Number.parseInt(req.params.productId, 10);
if (!Number.isInteger(productId)) {
req.flash("error", "Product niet gevonden.");
return res.redirect("/favorites");
}
const removed = FavoriteService.removeFavorite(req.user.id, productId, req.user.household_id);
if (!removed) {
req.flash("error", "Product niet gevonden in favorieten.");
return res.redirect("/favorites");
}
req.flash("success", "Product verwijderd uit favorieten.");
res.redirect("/favorites");
}
}
module.exports = new FavoriteController();