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();