diff --git a/src/controller/sublevel.controller.js b/src/controller/sublevel.controller.js index 2269441..0307022 100644 --- a/src/controller/sublevel.controller.js +++ b/src/controller/sublevel.controller.js @@ -1,6 +1,7 @@ const Sublevel = require("../models/Sublevel"); const mongoose = require("mongoose"); -const { addSublevelToParent, deleteSubLevelTreeFromRoot } = require("./utils/sublevel"); +const { addSublevelToParent, deleteSubLevelTreeFromRoot, validPositions } = require("./utils/sublevel"); +const { SubLevelTypes } = require("../config/constants"); module.exports = { /** @@ -32,11 +33,21 @@ module.exports = { createSubLevel: async (req, res, next) => { const { name, type, specs, parent_id, parentIsLevel, positions } = req.body; - if (!(name && type && parent_id)) { + if (!(name && type && parent_id && positions)) { res.status(400).send("Missing params param"); return; } + if (!SubLevelTypes.includes(type)) { + res.status(400).send("Invalid type"); + return; + } + + if (!validPositions(positions)) { + res.status(400).send("Invalid positions"); + return; + } + try { const parentData = parentIsLevel ? { parent_current_depth: 0, parent_main_level_id: parent_id } : await Sublevel.findById(parent_id); @@ -76,6 +87,11 @@ module.exports = { return; } + if (type && !SubLevelTypes.includes(type)) { + res.status(400).send("Invalid type"); + return; + } + try { const sublevelData = await Sublevel.findById(id); if (!sublevelData) { diff --git a/src/controller/utils/sublevel.js b/src/controller/utils/sublevel.js index 37e7ab6..3e63a93 100644 --- a/src/controller/utils/sublevel.js +++ b/src/controller/utils/sublevel.js @@ -95,10 +95,20 @@ const findAvailablePositions = (sublevelData) => { return LevelPositions.filter((pos) => !positionsOccupied.includes(pos)); }; +/** + * Check if positions are valid positions + * @param {string[]} positions An array of positions + * @returns {boolean} + */ +const validPositions = (positions) => { + return positions.every((position) => LevelPositions.includes(position)); +}; + module.exports = { addSublevelToParent, removeSublevelFromParent, deleteSubLevelTreeFromRoot, moveSublevel, findAvailablePositions, + validPositions, };