const MenuService = require("../services/MenuService"); class MenuController { index(req, res) { res.render("menu/index", { title: "Weekmenu" }); } async generate(req, res) { const people = Number.parseInt(req.body.people, 10); const preferences = { people: Number.isInteger(people) && people > 0 && people <= 12 ? people : 2, diet: (req.body.diet || "").trim(), exclude: (req.body.exclude || "").trim(), budget: (req.body.budget || "").trim() }; try { const menu = await MenuService.generate(preferences); res.render("menu/preview", { title: "Weekmenu controleren", menu, newProducts: MenuService.getNewProducts(menu, req.user.household_id), listName: "Weekboodschappen" }); } catch (error) { req.flash("error", error.message); res.redirect("/menu"); } } addToList(req, res) { let menu; try { menu = JSON.parse(req.body.menu || "{}"); } catch (error) { req.flash("error", "Het menu kan niet worden gelezen."); return res.redirect("/menu"); } if (!Array.isArray(menu.days) || menu.days.length === 0) { req.flash("error", "Het menu is leeg."); return res.redirect("/menu"); } const listName = (req.body.list_name || "Weekboodschappen").trim(); if (!listName) { req.flash("error", "Geef een naam voor de boodschappenlijst op."); return res.redirect("/menu"); } const listId = MenuService.addToShoppingList(req.user.household_id, listName, menu); req.flash("success", "Weekmenu toegevoegd aan de boodschappenlijst."); res.redirect(`/lists/${listId}`); } } module.exports = new MenuController();