52 lines
1.7 KiB
JavaScript
52 lines
1.7 KiB
JavaScript
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();
|