V1.1 met AI functie
This commit is contained in:
@@ -0,0 +1,67 @@
|
||||
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),
|
||||
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();
|
||||
Reference in New Issue
Block a user