Merge pull request #19 from kfnawaz/feat/missing-apis
Feat: missing apis #1
This commit is contained in:
@@ -1,7 +1,15 @@
|
||||
const Inventory = require("../models/Inventory");
|
||||
const WidgetFamily = require("../models/WidgetFamily");
|
||||
const { InventoryTypes } = require("../config/constants");
|
||||
|
||||
module.exports = {
|
||||
/**
|
||||
* Gets the Inventory types
|
||||
*/
|
||||
getInventoryTypes: async (req, res, next) => {
|
||||
res.send({ success: true, data: InventoryTypes });
|
||||
},
|
||||
|
||||
/**
|
||||
* Gets the Inventory data by `id`
|
||||
*/
|
||||
@@ -162,6 +170,11 @@ module.exports = {
|
||||
res.status(404);
|
||||
return;
|
||||
}
|
||||
|
||||
for (const inventory of inventoryData) {
|
||||
inventory["widgetFamilies"] = await WidgetFamily.find({ inventory: inventory._id });
|
||||
}
|
||||
|
||||
res.send({ success: true, data: inventoryData });
|
||||
} catch (error) {
|
||||
next(error);
|
||||
|
||||
@@ -11,6 +11,11 @@ router.post("/", controller.createInventory);
|
||||
*/
|
||||
router.patch("/:id", controller.updateInventoryByID);
|
||||
|
||||
/**
|
||||
* @route /inventory/types
|
||||
*/
|
||||
router.get("/types", controller.getInventoryTypes);
|
||||
|
||||
/**
|
||||
* @route /inventory/filter-by-type
|
||||
*/
|
||||
|
||||
@@ -142,15 +142,24 @@ module.exports = {
|
||||
* Gets the Items data by filter
|
||||
*/
|
||||
getItemsByFilter: async (req, res, next) => {
|
||||
let { family, type, page, perPage } = req.query;
|
||||
let { family, type, inventory, page, perPage } = req.query;
|
||||
page = page ? parseInt(page) : 0;
|
||||
perPage = perPage ? parseInt(perPage) : 10;
|
||||
const inventoryFilters = {};
|
||||
let inventories;
|
||||
let widgetFamilies;
|
||||
let itemFilters;
|
||||
try {
|
||||
if (type && InventoryTypes.includes(type)) {
|
||||
inventories = await Inventory.find({ type });
|
||||
inventoryFilters["type"] = type;
|
||||
}
|
||||
|
||||
if (inventory) {
|
||||
inventoryFilters["_id"] = inventory;
|
||||
}
|
||||
|
||||
if (Object.keys(inventoryFilters).length > 0) {
|
||||
inventories = await Inventory.find(inventoryFilters);
|
||||
}
|
||||
|
||||
const widgetFamilyFilters = [];
|
||||
|
||||
@@ -26,6 +26,29 @@ module.exports = {
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* Gets the WidgetFamily children data by `id`
|
||||
*/
|
||||
getWidgetFamilyChildrenByID: async (req, res, next) => {
|
||||
const { id } = req.params;
|
||||
|
||||
if (!id) {
|
||||
res.status(400).send("Missing id param");
|
||||
return;
|
||||
}
|
||||
|
||||
try {
|
||||
const widgetFamilyData = await WidgetFamily.find({ parent: id });
|
||||
if (!widgetFamilyData) {
|
||||
res.status(404).send({ success: false, error: "Widget not found" });
|
||||
return;
|
||||
}
|
||||
res.send({ success: true, data: widgetFamilyData });
|
||||
} catch (error) {
|
||||
next(error);
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* Create a WidgetFamily
|
||||
*/
|
||||
|
||||
@@ -21,4 +21,9 @@ router.get("/search-by-inventory", controller.getWidgetFamilyByInventory);
|
||||
*/
|
||||
router.get("/:id", controller.getWidgetFamilyByID);
|
||||
|
||||
/**
|
||||
* @route /widgetFamily/:id/children
|
||||
*/
|
||||
router.get("/:id/children", controller.getWidgetFamilyChildrenByID);
|
||||
|
||||
module.exports = router;
|
||||
|
||||
Reference in New Issue
Block a user