From 866d7250a375b53fb3e97eed91993db62ef19c70 Mon Sep 17 00:00:00 2001 From: Bhaskar Date: Mon, 5 May 2025 12:28:48 +0530 Subject: [PATCH] changes --- src/controllers/installationController.js | 111 ++++++++++++++-------- 1 file changed, 69 insertions(+), 42 deletions(-) diff --git a/src/controllers/installationController.js b/src/controllers/installationController.js index f36f36df..f18a2d57 100644 --- a/src/controllers/installationController.js +++ b/src/controllers/installationController.js @@ -2844,18 +2844,18 @@ exports.getDisconnectedIssuesBySupportId = async (req, reply) => { const allIssues = supportRecord.issues || []; const hardwareSet = new Set(); - // Collect all master and slave hardware IDs + // Collect all hardware IDs mentioned in issues for (const issue of allIssues) { - if (issue.hardwareId) hardwareSet.add(issue.hardwareId); + if (issue.hardwareId) hardwareSet.add(issue.hardwareId); // GSM if (Array.isArray(issue.hardwareIds)) { - issue.hardwareIds.forEach(id => hardwareSet.add(id)); + issue.hardwareIds.forEach(id => hardwareSet.add(id)); // LoRa slaves } + if (issue.masterHardwareId) hardwareSet.add(issue.masterHardwareId); // LoRa master } const hardwareIds = [...hardwareSet]; const sensors = await Insensors.find({ hardwareId: { $in: hardwareIds } }).lean(); - console.log("sensors",sensors) // Map sensors by hardwareId const sensorMap = {}; for (const sensor of sensors) { @@ -2864,48 +2864,74 @@ exports.getDisconnectedIssuesBySupportId = async (req, reply) => { const masterMap = {}; - // Structure data - for (const sensor of sensors) { - if (sensor.type === "master") { - masterMap[sensor.hardwareId] = { - hardwareId: sensor.hardwareId, - masterName: sensor.masterName , - location: sensor.location || "", - type: "master", - connected_status: sensor.connected_status, - gsm_last_check_time: sensor.gsm_last_check_time, - gsm_last_disconnect_time: sensor.gsm_last_disconnect_time, - connected_gsm_date: sensor.connected_gsm_date, - connected_gsm_time: sensor.connected_gsm_time, - connected_lora_date: sensor.connected_lora_date, - connected_lora_time: sensor.connected_lora_time, - connected_slave_count: 0, - connected_slaves: [] - }; - } - } - - // Add slaves under corresponding masters - for (const sensor of sensors) { - if (sensor.type === "slave" && sensor.connected_to) { - const master = masterMap[sensor.connected_to]; - if (master) { - master.connected_slaves.push({ + // First, add relevant masters from issues + for (const issue of allIssues) { + if (issue.type === "GSM Disconnected" && issue.hardwareId) { + const sensor = sensorMap[issue.hardwareId]; + if (sensor && sensor.type === "master") { + masterMap[sensor.hardwareId] = { hardwareId: sensor.hardwareId, - tankName: sensor.tankName || "", + masterName: sensor.masterName, location: sensor.location || "", + type: "master", connected_status: sensor.connected_status, - connected_lora_time: sensor.connected_lora_time, + gsm_last_check_time: sensor.gsm_last_check_time, + gsm_last_disconnect_time: sensor.gsm_last_disconnect_time, + connected_gsm_date: sensor.connected_gsm_date, + connected_gsm_time: sensor.connected_gsm_time, connected_lora_date: sensor.connected_lora_date, - lora_last_check_time: sensor.lora_last_check_time, - lora_last_disconnect_time: sensor.lora_last_disconnect_time, - connected_to: sensor.connected_to, - masterName: master.masterName, - type: "slave", - typeOfWater: sensor.typeOfWater, - tankHeight: sensor.tankHeight - }); - master.connected_slave_count++; + connected_lora_time: sensor.connected_lora_time, + connected_slave_count: 0, + connected_slaves: [] + }; + } + } + + if (issue.type === "LoRa Disconnected" && issue.masterHardwareId) { + const masterSensor = sensorMap[issue.masterHardwareId]; + if (masterSensor && masterSensor.type === "master") { + if (!masterMap[masterSensor.hardwareId]) { + masterMap[masterSensor.hardwareId] = { + hardwareId: masterSensor.hardwareId, + masterName: masterSensor.masterName, + location: masterSensor.location || "", + type: "master", + connected_status: masterSensor.connected_status, + gsm_last_check_time: masterSensor.gsm_last_check_time, + gsm_last_disconnect_time: masterSensor.gsm_last_disconnect_time, + connected_gsm_date: masterSensor.connected_gsm_date, + connected_gsm_time: masterSensor.connected_gsm_time, + connected_lora_date: masterSensor.connected_lora_date, + connected_lora_time: masterSensor.connected_lora_time, + connected_slave_count: 0, + connected_slaves: [] + }; + } + + const master = masterMap[issue.masterHardwareId]; + if (master && Array.isArray(issue.hardwareIds)) { + for (const slaveId of issue.hardwareIds) { + const slaveSensor = sensorMap[slaveId]; + if (slaveSensor && slaveSensor.type === "slave") { + master.connected_slaves.push({ + hardwareId: slaveSensor.hardwareId, + tankName: slaveSensor.tankName || "", + location: slaveSensor.location || "", + connected_status: slaveSensor.connected_status, + connected_lora_time: slaveSensor.connected_lora_time, + connected_lora_date: slaveSensor.connected_lora_date, + lora_last_check_time: slaveSensor.lora_last_check_time, + lora_last_disconnect_time: slaveSensor.lora_last_disconnect_time, + connected_to: slaveSensor.connected_to, + masterName: master.masterName, + type: "slave", + typeOfWater: slaveSensor.typeOfWater, + tankHeight: slaveSensor.tankHeight + }); + master.connected_slave_count++; + } + } + } } } } @@ -2924,6 +2950,7 @@ exports.getDisconnectedIssuesBySupportId = async (req, reply) => { return reply.code(500).send({ error: "Internal server error" }); } }; + exports.getDisconnectedCustomerDetails = async (req, reply) => { try { const { supportId } = req.params;