Files
PantryHub/routes/web.js
T

221 lines
4.1 KiB
JavaScript

const router = require("express").Router();
const multer = require("multer");
const upload = multer({
storage: multer.memoryStorage(),
limits: { fileSize: 2 * 1024 * 1024 }
});
function uploadCsv(req, res, next) {
upload.single("file")(req, res, (error) => {
if (error) {
req.flash("error", "Het CSV-bestand is te groot of ongeldig.");
return res.redirect("/products");
}
next();
});
}
const auth = require("../middleware/auth");
const DashboardController =
require("../controllers/DashboardController");
const HouseholdController =
require("../controllers/HouseholdController");
const ProductController =
require("../controllers/ProductController");
const CategoryController =
require("../controllers/CategoryController");
const ShoppingListController =
require("../controllers/ShoppingListController");
const FavoriteController = require("../controllers/FavoriteController");
const MenuController =
require("../controllers/MenuController");
router.get(
"/",
auth,
DashboardController.index
);
router.get(
"/household",
auth,
HouseholdController.index.bind(HouseholdController)
);
router.get(
"/products",
auth,
ProductController.index.bind(ProductController)
);
router.get(
"/categories",
auth,
CategoryController.index.bind(CategoryController)
);
router.post(
"/categories",
auth,
CategoryController.create.bind(CategoryController)
);
router.get(
"/categories/:id/edit",
auth,
CategoryController.editForm.bind(CategoryController)
);
router.post(
"/categories/:id",
auth,
CategoryController.update.bind(CategoryController)
);
router.post(
"/categories/:id/delete",
auth,
CategoryController.remove.bind(CategoryController)
);
router.post(
"/products",
auth,
ProductController.create.bind(ProductController)
);
router.post(
"/products/import",
auth,
uploadCsv,
ProductController.import.bind(ProductController)
);
router.get(
"/products/:id/edit",
auth,
ProductController.editForm.bind(ProductController)
);
router.post(
"/products/:id",
auth,
ProductController.update.bind(ProductController)
);
router.post(
"/products/:id/delete",
auth,
ProductController.remove.bind(ProductController)
);
router.post(
"/products/:id/favorite",
auth,
FavoriteController.toggle.bind(FavoriteController)
);
router.get(
"/favorites",
auth,
FavoriteController.index.bind(FavoriteController)
);
router.post(
"/favorites/:productId/delete",
auth,
FavoriteController.remove.bind(FavoriteController)
);
router.get(
"/lists",
auth,
ShoppingListController.index.bind(ShoppingListController)
);
router.get(
"/menu",
auth,
MenuController.index.bind(MenuController)
);
router.post(
"/menu/generate",
auth,
MenuController.generate.bind(MenuController)
);
router.post(
"/menu/add",
auth,
MenuController.addToList.bind(MenuController)
);
router.post(
"/lists",
auth,
ShoppingListController.create.bind(ShoppingListController)
);
router.post(
"/lists/:id/favorites/add",
auth,
ShoppingListController.addFavoriteProducts.bind(ShoppingListController)
);
router.post(
"/lists/:id/items/clear",
auth,
ShoppingListController.clearItems.bind(ShoppingListController)
);
router.get(
"/lists/:id",
auth,
ShoppingListController.show.bind(ShoppingListController)
);
router.post(
"/lists/:id/items",
auth,
ShoppingListController.addItem.bind(ShoppingListController)
);
router.post(
"/lists/:id/items/:itemId/toggle",
auth,
ShoppingListController.toggleItem.bind(ShoppingListController)
);
router.post(
"/lists/:id/items/reset",
auth,
ShoppingListController.resetItems.bind(ShoppingListController)
);
router.delete(
"/lists/:id/items/:itemId",
auth,
ShoppingListController.deleteItem.bind(ShoppingListController)
);
router.delete(
"/lists/:id",
auth,
ShoppingListController.deleteList.bind(ShoppingListController)
);
module.exports = router;