diff --git a/src/controller/index.js b/src/controller/index.js index 64bc9dd..d1b41a7 100644 --- a/src/controller/index.js +++ b/src/controller/index.js @@ -11,6 +11,7 @@ const areaRouter = require("./area.router"); const bayRouter = require("./bay.router"); const rowRouter = require("./row.router"); const levelRouter = require("./level.router"); +const sublevelRouter = require("./sublevel.router"); router.use("/user-role", AuthenticateMiddleware, userRoleRouter); router.use("/user-permission", AuthenticateMiddleware, userPermissionRouter); @@ -22,6 +23,7 @@ router.use("/area", areaRouter); router.use("/bay", bayRouter); router.use("/row", rowRouter); router.use("/level", levelRouter); +router.use("/sublevel", sublevelRouter); router.get("/", (req, res) => { diff --git a/src/controller/sublevel.controller.js b/src/controller/sublevel.controller.js new file mode 100644 index 0000000..97dc2d3 --- /dev/null +++ b/src/controller/sublevel.controller.js @@ -0,0 +1,96 @@ +const SubLevel = require("../models/SubLevel"); +const mongoose = require("mongoose"); + +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, main_level_id } = req.body; + + if (!(name && type && main_level_id)) { + res.status(400).send("Missing params param"); + return; + } + + try { + const levelData = new SubLevel({ + name, + type: type, + specs, + main_level_id: mongoose.Types.ObjectId(main_level_id), + }); + + await levelData.save(); + if (!levelData) { + res.status(404); + return; + } + req.send(levelData); + } catch (error) { + next(error); + } + }, + + /** + * Update a sublevels' detail + */ + updateSubLevelByID: async (req, res, next) => { + const { id } = req.params; + + if (!id) { + res.status(400).send("Missing id param"); + return; + } + + const { name, type, specs, main_level_id } = req.body; + + if (!(name || type || specs || main_level_id)) { + res.status(400).send("Missing data in body"); + return; + } + + try { + const levelData = await SubLevel.findById(id); + if (!levelData) { + res.status(404); + return; + } + + if (name) levelData.name = name; + if (type) levelData.type = type; + if (specs) levelData.specs = specs; + if (main_level_id) { + levelData.main_level_id = mongoose.Types.ObjectId(main_level_id); + } + + await levelData.save(); + req.send(levelData); + } catch (error) { + next(error); + } + }, +}; diff --git a/src/controller/sublevel.router.js b/src/controller/sublevel.router.js new file mode 100644 index 0000000..2714fd2 --- /dev/null +++ b/src/controller/sublevel.router.js @@ -0,0 +1,19 @@ +const router = require("express").Router(); +const controller = require("./sublevel.controller"); + +/** + * @route /sublevel/:id + */ +router.get("/:id", controller.getSubLevelByID); + +/** + * @route /sublevel/ + */ +router.post("/", controller.createSubLevel); + +/** + * @route /sublevel/ + */ +router.patch("/:id", controller.updateSubLevelByID); + +module.exports = router;