Added: Deleted by type and id

This commit is contained in:
Llewellyn Dsouza
2022-02-27 16:49:13 +05:30
parent 9fe979ad2c
commit ed5eeed9ed
2 changed files with 53 additions and 9 deletions

View File

@@ -10,6 +10,7 @@ const Sublevel = require("../models/Sublevel");
const Inventory = require("../models/Inventory"); const Inventory = require("../models/Inventory");
const WidgetFamily = require("../models/WidgetFamily"); const WidgetFamily = require("../models/WidgetFamily");
const Item = require("../models/Item"); const Item = require("../models/Item");
const { deleteSubLevelTreeFromRoot } = require("./utils/sublevel");
const createWarehouse = async ({ name, address, specs, company_id }) => { const createWarehouse = async ({ name, address, specs, company_id }) => {
if (!(name && address)) { if (!(name && address)) {
@@ -251,20 +252,20 @@ const createWidgetFamilies = async (widgetFamilies, inventory, parent = undefine
return widgetFamiliesData; return widgetFamiliesData;
}; };
const getChildModel = (parentType) => { const getLocationTypeModel = (type) => {
switch (parentType) { switch (type) {
case "warehouse": case "warehouse":
return Zone; return Warehouse;
case "zone": case "zone":
return Area; return Zone;
case "area": case "area":
return Row; return Area;
case "row": case "row":
return Bay; return Row;
case "bay": case "bay":
return Level; return Bay;
case "level": case "level":
return Sublevel; return Level;
case "sublevel": case "sublevel":
return Sublevel; return Sublevel;
default: default:
@@ -272,6 +273,26 @@ const getChildModel = (parentType) => {
} }
}; };
const getChildType = (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":
case "sublevel":
return "sublevel";
default:
throw new Error("Invalid model type");
}
};
module.exports = { module.exports = {
createWarehouseSchema: async (req, res, next) => { createWarehouseSchema: async (req, res, next) => {
try { try {
@@ -369,7 +390,7 @@ module.exports = {
break; break;
} }
let childrenData = await getChildModel(type).find(query); let childrenData = await getLocationTypeModel(getChildType(type)).find(query);
// populate locations to sublevel // populate locations to sublevel
if (childrenData && ["level", "sublevel"].includes(type)) { if (childrenData && ["level", "sublevel"].includes(type)) {
@@ -387,4 +408,22 @@ module.exports = {
next(error); next(error);
} }
}, },
deleteByIdAndLocationType: async (req, res, next) => {
const { id, type } = req.body;
let removedIDs;
try {
switch (type) {
case "sublevel":
removedIDs = await deleteSubLevelTreeFromRoot(id);
break;
default:
removedIDs = await getLocationTypeModel(type).deleteOne({ _id: id });
break;
}
res.send({ success: true, data: { removedIDs, deleted: { id, type } } });
} catch (error) {
next(error);
}
},
}; };

View File

@@ -16,4 +16,9 @@ router.post("/create-inventory-schema", controller.createInventorySchema);
*/ */
router.post("/get-children-from-parent", controller.getChildrenFromParent); router.post("/get-children-from-parent", controller.getChildrenFromParent);
/**
* @route /dashboard/location
*/
router.post("/delete-location", controller.deleteByIdAndLocationType);
module.exports = router; module.exports = router;