From 30fddfc8fd806e4d1daeaa211d5dbd9a66e347e7 Mon Sep 17 00:00:00 2001 From: Llewellyn D'souza Date: Wed, 16 Feb 2022 15:41:27 +0530 Subject: [PATCH] Added: get children from parent w/ id, type --- src/controller/dashboard.controller.js | 35 ++++++++++++++++++++++++++ src/controller/dashboard.router.js | 5 ++++ 2 files changed, 40 insertions(+) diff --git a/src/controller/dashboard.controller.js b/src/controller/dashboard.controller.js index 0f5c3b6..545657f 100644 --- a/src/controller/dashboard.controller.js +++ b/src/controller/dashboard.controller.js @@ -251,6 +251,27 @@ const createWidgetFamilies = async (widgetFamilies, inventory, parent = undefine return widgetFamiliesData; }; +const getChildModel = (parentType) => { + switch (parentType) { + case "warehouse": + return Zone; + case "zone": + return Area; + case "area": + return Row; + case "row": + return Bay; + case "bay": + return Level; + case "level": + return Sublevel; + case "sublevel": + return Sublevel; + default: + throw new Error("Invalid model type"); + } +}; + module.exports = { createWarehouseSchema: async (req, res, next) => { try { @@ -330,4 +351,18 @@ module.exports = { next(error); } }, + getChildrenFromParent: async (req, res, next) => { + try { + const { id, type } = req.body; + if (!id || !type) return res.send({ success: false, message: "Missing id or type" }); + + const query = {}; + query[`${type}_id`] = id; + + const childrenData = await getChildModel(type).find(query); + res.send({ success: true, data: { parent: { id, type }, childrenData } }); + } catch (error) { + next(error); + } + }, }; diff --git a/src/controller/dashboard.router.js b/src/controller/dashboard.router.js index 2781589..91a5945 100644 --- a/src/controller/dashboard.router.js +++ b/src/controller/dashboard.router.js @@ -11,4 +11,9 @@ router.post("/create-warehouse-schema", controller.createWarehouseSchema); */ router.post("/create-inventory-schema", controller.createInventorySchema); +/** + * @route /dashboard/get-children-from-parent + */ +router.post("/get-children-from-parent", controller.getChildrenFromParent); + module.exports = router;