Files
plaidware-wms-core/src/controller/sublevel.controller.js
2021-12-29 22:38:56 +05:30

103 lines
2.4 KiB
JavaScript

const Sublevel = require("../models/Sublevel");
const mongoose = require("mongoose");
const { addSublevelToParent } = require("./utils/sublevel");
module.exports = {
/**
* Gets the sublevel data by `id`
*/
getSubLevelByID: async (req, res, next) => {
const { id } = req.params;
if (!id) {
res.status(400).send("Missing id param");
return;
}
try {
const subLevelData = await Sublevel.findById(id);
if (!subLevelData) {
res.status(404);
return;
}
req.send(subLevelData);
} catch (error) {
next(error);
}
},
/**
* Create a sublevel
*/
createSubLevel: async (req, res, next) => {
const { name, type, specs, parent_id, parentIsLevel, positions } = req.body;
if (!(name && type && parent_id)) {
res.status(400).send("Missing params param");
return;
}
try {
const parentData = parentIsLevel
? { parent_current_depth: 0, parent_main_level_id: parent_id }
: await Sublevel.findById(parent_id);
const { parent_current_depth, parent_main_level_id } = parentData;
const sublevelData = new Sublevel({
name,
type: type,
specs,
main_level_id: parent_main_level_id,
current_depth: parent_current_depth + 1,
parent_sublevel_id: mongoose.Types.ObjectId(parent_id),
});
await addSublevelToParent(
{ type, positions, sub_level_id: sublevelData._id.toString() },
parent_id,
parentIsLevel
);
await sublevelData.save();
if (!sublevelData) {
res.status(404);
return;
}
req.send(sublevelData);
} catch (error) {
next(error);
}
},
/**
* Update a sublevels' detail
*/
updateSubLevelDetailsByID: async (req, res, next) => {
const { name, type, specs } = req.body;
const { id } = req.params;
if (!(name || type || specs)) {
res.status(400).send("Missing params param");
return;
}
try {
const sublevelData = await Sublevel.findById(id);
if (!sublevelData) {
res.status(404);
return;
}
if (name) sublevelData.name = name;
if (type) sublevelData.type = type;
if (specs) sublevelData.specs = specs;
const newData = await sublevelData.save();
req.send(newData);
} catch (error) {
next(error);
}
},
};