diff --git a/src/controllers/storeController.js b/src/controllers/storeController.js index 50088953..5c898dbe 100644 --- a/src/controllers/storeController.js +++ b/src/controllers/storeController.js @@ -531,7 +531,45 @@ exports.addStore = async (request, reply) => { + exports.editWaterLevelSensor = async (req, reply) => { + try { + const { storeId } = req.params; + const updates = req.body; + + const updatedSensor = await WaterLeverSensor.findOneAndUpdate( + { storeId:storeId,hardwareId: req.body.hardwareId }, + updates, + { new: true } + ); + + if (!updatedSensor) { + reply.code(404).send({ message: "Sensor not found" }); + } else { + reply.code(200).send(updatedSensor); + } + } catch (err) { + reply.code(500).send(err); + } + }; + exports.deleteWaterLevelSensor = async (req, reply) => { + try { + const { storeId } = req.params; + + const deletedSensor = await WaterLeverSensor.findOneAndDelete( + { storeId,hardwareId: req.body.hardwareId } + ); + + if (!deletedSensor) { + reply.code(404).send({ message: "Sensor not found" }); + } else { + reply.code(200).send({ message: "Sensor deleted successfully" }); + } + } catch (err) { + reply.code(500).send(err); + } + }; + exports.installwaterlevelSensor = async (request, reply) => { try { @@ -676,6 +714,72 @@ exports.addStore = async (request, reply) => { }; + +exports.editSlave = async (req, reply) => { + try { + const { hardwareId } = req.params; + const updates = req.body; + + const mainHardware = await WaterLeverSensor.findOne({ hardwareId }); + + if (!mainHardware) { + reply.code(404).send({ message: "Main hardware not found" }); + return; + } + + const slaveIndex = mainHardware.slaves.tankhardware.findIndex( + (slave) => slave.tankhardwareId === req.body.tankhardwareId + ); + + if (slaveIndex === -1) { + reply.code(404).send({ message: "Slave not found" }); + return; + } + + mainHardware.slaves.tankhardware[slaveIndex] = { + ...mainHardware.slaves.tankhardware[slaveIndex], + ...updates, + }; + + const updatedHardware = await mainHardware.save(); + + reply.code(200).send(updatedHardware); + } catch (err) { + reply.code(500).send(err); + } +}; + + +exports.deleteSlave = async (req, reply) => { + try { + const { hardwareId } = req.params; + + const mainHardware = await WaterLeverSensor.findOne({ hardwareId }); + + if (!mainHardware) { + reply.code(404).send({ message: "Main hardware not found" }); + return; + } + + const slaveIndex = mainHardware.slaves.tankhardware.findIndex( + (slave) => slave.tankhardwareId === req.body.tankhardwareId + ); + + if (slaveIndex === -1) { + reply.code(404).send({ message: "Slave not found" }); + return; + } + + mainHardware.slaves.tankhardware.splice(slaveIndex, 1); + + const updatedHardware = await mainHardware.save(); + + reply.code(200).send(updatedHardware); + } catch (err) { + reply.code(500).send(err); + } +}; + exports.qccheckwaterlevelSensorSlave = async (request, reply) => { try { const { storeId } = request.params; diff --git a/src/routes/storeRoute.js b/src/routes/storeRoute.js index 295cf49d..c5552988 100644 --- a/src/routes/storeRoute.js +++ b/src/routes/storeRoute.js @@ -155,6 +155,64 @@ fastify.post("/api/createwaterlevelSensor/:storeId", { }) + +fastify.put("/api/editwaterlevelSensor/:storeId", { + schema: { + description: "This is for editing a water level sensor", + tags: ["Store-Data"], + summary: "This is for editing a water level sensor", + params: { + required: ["storeId"], + type: "object", + properties: { + storeId: { + type: "string", + description: "storeId", + }, + + }, + }, + body: { + type: "object", + properties: { + hardwareId: { type: "string" }, + type: { type: "string" }, + indate: { type: "string" }, + hardwareId_company: { type: "string" } + }, + }, + }, + handler: storeController.editWaterLevelSensor, +}); + + +fastify.delete("/api/deletewaterlevelSensor/:storeId", { + schema: { + description: "This is for deleting a water level sensor", + tags: ["Store-Data"], + summary: "This is for deleting a water level sensor", + params: { + required: ["storeId"], + type: "object", + properties: { + storeId: { + type: "string", + description: "storeId", + }, + + }, + }, + body: { + type: "object", + properties: { + hardwareId: { type: "string" }, + + }, + }, + }, + handler: storeController.deleteWaterLevelSensor, +}); + fastify.get("/api/getHardware/:storeId", { schema: { tags: ["Store-Data"], @@ -307,6 +365,73 @@ fastify.post("/api/addSlave/:hardwareId", { }); +fastify.put("/api/editSlave/:hardwareId", { + schema: { + description: "This is for editing a slave of a water level sensor", + tags: ["Store-Data"], + summary: "This is for editing a slave of a water level sensor", + params: { + required: ["hardwareId"], + type: "object", + properties: { + hardwareId: { + type: "string", + description: "Main hardware ID", + }, + + }, + }, + body: { + type: "object", + properties: { + tankhardwareId: { type: "string" }, + type: { type: "string" }, + indate: { type: "string" }, + hardwareId_company: { type: "string" }, + qccheck: { type: "string", default: null }, + qccheckdate: { type: "string", default: null }, + qcby: { type: "string", default: null }, + comment: { type: "string", default: "0" }, + outforrepairdate: { type: "string", default: "0" }, + sendto: { type: "string", default: null }, + repairfeedback: { type: "string", default: "0" }, + dateofinstallation: { type: "string", default: null }, + installedby: { type: "string", default: "0" }, + customerId: { type: "string", default: "0" }, + comments: { type: "string", default: "0" }, + }, + }, + }, + handler: storeController.editSlave, +}); + + +fastify.delete("/api/deleteSlave/:hardwareId", { + schema: { + description: "This is for deleting a slave of a water level sensor", + tags: ["Store-Data"], + summary: "This is for deleting a slave of a water level sensor", + params: { + required: ["hardwareId"], + type: "object", + properties: { + hardwareId: { + type: "string", + description: "Main hardware ID", + }, + + }, + }, + body: { + type: "object", + properties: { + tankhardwareId: { type: "string" }, + + }, + }, + }, + handler: storeController.deleteSlave, +}); fastify.post("/api/qccheckwaterlevelslaveSensor/:storeId", { schema: {