diff --git a/src/controller/dashboard.controller.js b/src/controller/dashboard.controller.js index 8616843..bfa8a4b 100644 --- a/src/controller/dashboard.controller.js +++ b/src/controller/dashboard.controller.js @@ -60,7 +60,7 @@ const createAreas = async (areas, zone) => { await areaObj.save(); if (area.rows) { - areaObj.rows = await createRows(zone.areas, area); + areaObj.rows = await createRows(area.rows, areaObj); } areasArr.push(areaObj); } @@ -80,7 +80,7 @@ const createRows = async (rows, area) => { await rowObj.save(); if (row.bays) { - rowObj.bays = await createBays(row.bays, row); + rowObj.bays = await createBays(row.bays, rowObj); } rowsArr.push(rowObj); } @@ -101,7 +101,7 @@ const createBays = async (bays, row) => { await bayObj.save(); if (bay.levels) { - bayObj.levels = await createLevels(bay.levels, bay); + bayObj.levels = await createLevels(bay.levels, bayObj); } baysArr.push(bayObj); } @@ -120,8 +120,8 @@ const createLevels = async (levels, bay) => { }); await levelObj.save(); - if (level.levels) { - levelObj.subLevels = await createSublevels(level.subLevels, level); + if (level.subLevels) { + levelObj.sub_levels = await createSublevels(level.subLevels, levelObj); } levelsArr.push(levelObj); } @@ -129,7 +129,7 @@ const createLevels = async (levels, bay) => { }; const createSublevels = async (subLevels, level, parent = undefined, depth = 0) => { - const subLevelsArr = []; + const sub_levels_list = []; for (const subLevel of subLevels) { const subLevelObj = await Sublevel.create({ name: subLevel.name, @@ -137,28 +137,30 @@ const createSublevels = async (subLevels, level, parent = undefined, depth = 0) specs: subLevel.specs, main_level_id: level._id, current_depth: depth, - parent_subLevel_id: parent ? parent._id : undefined, + parent_sublevel_id: parent ? parent._id : undefined, has_inventory: subLevel.has_inventory, - inventory: subLevel.inventory, + preferred_inventory: subLevel.preferred_inventory, }); - if (subLevel.sub_levels) { - const subSubLevels = await createSublevels(subLevel.sub_levels, level, subLevelObj, depth + 1); + const sub_levels = { + positions: subLevel.positions, + type: subLevel.type, + sub_level_id: subLevelObj._id, + }; + sub_levels_list.push(sub_levels); - subLevelObj.sub_levels = subSubLevels.map((_) => { - return { - type: _.type, - depth: _.depth, - sub_level_id: _._id, - }; - }); + if (depth > 0 && parent) { + parent.sub_levels = parent.sub_levels.concat(sub_levels); - await subLevelObj.save(); + await parent.save(); } - subLevelsArr.push(subLevelObj); + if (subLevel.sub_levels) { + subLevelObj.sub_levels = await createSublevels(subLevel.sub_levels, level, subLevelObj, depth + 1); + await subLevelObj.save(); + } } - return subLevelsArr; + return sub_levels_list; }; const createInventory = async ({ name, type }) => { @@ -251,7 +253,7 @@ module.exports = { } warehouseSchema.warehouse = warehouse; - if (!req.body.warehouse.zones) { + if (req.body.warehouse.zones !== undefined && Array.isArray(req.body.warehouse.zones)) { const zones = await createZones(req.body.warehouse.zones, warehouse); if (!zones) { res.status(400).send({