Files
PantryHub/controllers/FavoriteController.js

54 lines
1.9 KiB
JavaScript

const FavoriteService = require("../services/FavoriteService");
const CategoryService = require("../services/CategoryService");
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,
categories: CategoryService.getCategories(req.user.household_id),
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();