validate positions
This commit is contained in:
@@ -1,6 +1,7 @@
|
|||||||
const Sublevel = require("../models/Sublevel");
|
const Sublevel = require("../models/Sublevel");
|
||||||
const mongoose = require("mongoose");
|
const mongoose = require("mongoose");
|
||||||
const { addSublevelToParent, deleteSubLevelTreeFromRoot } = require("./utils/sublevel");
|
const { addSublevelToParent, deleteSubLevelTreeFromRoot, validPositions } = require("./utils/sublevel");
|
||||||
|
const { SubLevelTypes } = require("../config/constants");
|
||||||
|
|
||||||
module.exports = {
|
module.exports = {
|
||||||
/**
|
/**
|
||||||
@@ -32,11 +33,21 @@ module.exports = {
|
|||||||
createSubLevel: async (req, res, next) => {
|
createSubLevel: async (req, res, next) => {
|
||||||
const { name, type, specs, parent_id, parentIsLevel, positions } = req.body;
|
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");
|
res.status(400).send("Missing params param");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!SubLevelTypes.includes(type)) {
|
||||||
|
res.status(400).send("Invalid type");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!validPositions(positions)) {
|
||||||
|
res.status(400).send("Invalid positions");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
const parentData = parentIsLevel ? { parent_current_depth: 0, parent_main_level_id: parent_id } : await Sublevel.findById(parent_id);
|
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;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (type && !SubLevelTypes.includes(type)) {
|
||||||
|
res.status(400).send("Invalid type");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
const sublevelData = await Sublevel.findById(id);
|
const sublevelData = await Sublevel.findById(id);
|
||||||
if (!sublevelData) {
|
if (!sublevelData) {
|
||||||
|
|||||||
@@ -95,10 +95,20 @@ const findAvailablePositions = (sublevelData) => {
|
|||||||
return LevelPositions.filter((pos) => !positionsOccupied.includes(pos));
|
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 = {
|
module.exports = {
|
||||||
addSublevelToParent,
|
addSublevelToParent,
|
||||||
removeSublevelFromParent,
|
removeSublevelFromParent,
|
||||||
deleteSubLevelTreeFromRoot,
|
deleteSubLevelTreeFromRoot,
|
||||||
moveSublevel,
|
moveSublevel,
|
||||||
findAvailablePositions,
|
findAvailablePositions,
|
||||||
|
validPositions,
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user