diff --git a/src/controllers/storeController.js b/src/controllers/storeController.js index 7955fa28..772eb819 100644 --- a/src/controllers/storeController.js +++ b/src/controllers/storeController.js @@ -690,6 +690,14 @@ exports.editStore = async (request, reply) => { } } + const generatewaterlevelheightsensorId = async () => { + const result = await Counter.findOneAndUpdate( + { _id: 'waterlevelheightsensor_id' }, + { $inc: { seq: 1 } }, + { upsert: true, new: true } + ); + return result.seq; + }; @@ -1167,18 +1175,35 @@ exports.installmotorswitch = async (request, reply) => { exports.updateSensorById = async (req, reply) => { try { const { _id } = req.params; - const updateData = req.body; + let updateData = req.body; - const allowedFields = ["model", "type", "hardwareId_company", "hardwareId", "masterId"]; + const allowedFields = ["model", "type", "hardwareId_company", "hardwareId"]; - // Filter out unwanted fields + // Filter out unwanted fields and convert type to lowercase if present const filteredUpdateData = Object.keys(updateData) .filter((key) => allowedFields.includes(key)) .reduce((obj, key) => { - obj[key] = updateData[key]; + obj[key] = key === "type" ? updateData[key].toLowerCase() : updateData[key]; return obj; }, {}); + // Generate masterId if type is provided + if (filteredUpdateData.type) { + let mater_seq_id; + const date = moment().format("MM-DD"); + + if (filteredUpdateData.type === "master") { + mater_seq_id = await generatewaterlevelsensorId(); + filteredUpdateData.masterId = `AS${date}MALOV1${mater_seq_id}`; + } else if (filteredUpdateData.type === "slave") { + mater_seq_id = await generatewaterlevelslavesensorId(); + filteredUpdateData.masterId = `AS${date}SLLOV1${mater_seq_id}`; + } else if (filteredUpdateData.type === "sensor") { + mater_seq_id = await generatewaterlevelheightsensorId(); + filteredUpdateData.masterId = `AS${date}SELOV1${mater_seq_id}`; + } + } + const updatedSensor = await Insensors.findByIdAndUpdate(_id, filteredUpdateData, { new: true }); if (!updatedSensor) { diff --git a/src/models/store.js b/src/models/store.js index e73f73f9..90df39a5 100644 --- a/src/models/store.js +++ b/src/models/store.js @@ -255,7 +255,7 @@ const insensorsSchema = new mongoose.Schema({ type: { type: String }, model: { type: String }, indate: { type: String }, - hardwareId_company: { type: String }, + hardwareId_company: { type: String,default: null }, qccheck: { type: String, default: null }, qccheckdate: { type: String, default: null }, qcby: { type: String, default: null }, diff --git a/src/routes/storeRoute.js b/src/routes/storeRoute.js index a5ee11d6..f4d75e3e 100644 --- a/src/routes/storeRoute.js +++ b/src/routes/storeRoute.js @@ -1133,7 +1133,7 @@ fastify.post("/api/updateSensorById/:_id", { hardwareId_company: { type: "string", description: "Company name of hardware ID" }, hardwareId: { type: "string", nullable: true, description: "Hardware ID (if applicable)" }, - masterId: { type: "string", nullable: true, description: "Master ID reference" } + }, }, },