diff --git a/src/controllers/installationController.js b/src/controllers/installationController.js index 611c7601..718a1781 100644 --- a/src/controllers/installationController.js +++ b/src/controllers/installationController.js @@ -5159,6 +5159,15 @@ exports.getDisconnectedIssuesBySupportId = async (req, reply) => { const masterSensor = sensorMap[masterId]; if (!masterSensor || masterSensor.type !== "master") continue; + const latestMasterData = await IotData.findOne({ hardwareId: masterSensor.hardwareId }).sort({ date: -1 }).lean(); + const now = moment.tz("Asia/Kolkata"); + let gsmConnected = false; + + if (latestMasterData?.date) { + const gsmTime = moment.tz(latestMasterData.date, "Asia/Kolkata"); + gsmConnected = now.diff(gsmTime, "minutes") <= 1; + } + if (!masterMap[masterSensor.hardwareId]) { const enriched = orderMap[masterSensor.hardwareId] || {}; masterMap[masterSensor.hardwareId] = { @@ -5166,7 +5175,7 @@ exports.getDisconnectedIssuesBySupportId = async (req, reply) => { masterName: enriched.masterName || masterSensor.masterName || "", location: enriched.location || masterSensor.location || "", type: "master", - connected_status: masterSensor.connected_status, + connected_status: gsmConnected ? "connected" : "disconnected", 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, @@ -5186,7 +5195,8 @@ exports.getDisconnectedIssuesBySupportId = async (req, reply) => { const connectedSlaves = await Insensors.find({ connected_to: masterSensor.hardwareId, type: "slave", - customerId }).lean(); + customerId + }).lean(); const slaveSet = new Set(master.connected_slaves.map(s => s.hardwareId)); @@ -5203,11 +5213,19 @@ exports.getDisconnectedIssuesBySupportId = async (req, reply) => { }).lean(); const slaveOrderInfo = slaveOrderMap[slaveHardwareId] || {}; + + const matchedTank = latestMasterData?.tanks?.find(t => t.tankhardwareId === slaveHardwareId); + let loraConnected = false; + if (matchedTank?.date && matchedTank.tankHeight !== "0") { + const loraTime = moment.tz(matchedTank.date, "Asia/Kolkata"); + loraConnected = now.diff(loraTime, "minutes") <= 1; + } + const slaveEnriched = { hardwareId: slaveHardwareId, - tankName: slave.tankName || (tankInfo?.tankName ?? ""), + tankName: slave.tankName || tankInfo?.tankName || "", location: slave.location || tankInfo?.tankLocation || slaveOrderInfo.location || "", - connected_status: slave.connected_status, + connected_status: loraConnected ? "connected" : "disconnected", connected_lora_time: slave.connected_lora_time, connected_lora_date: slave.connected_lora_date, lora_last_check_time: slave.lora_last_check_time, @@ -5226,10 +5244,7 @@ exports.getDisconnectedIssuesBySupportId = async (req, reply) => { } } - // Map comments to only the text strings const commentTexts = (supportRecord.comments || []).map(c => c.text); - - // Add these comments to each master in disconnectedIssues for (const master of Object.values(masterMap)) { master.comments = commentTexts; } @@ -5241,13 +5256,13 @@ exports.getDisconnectedIssuesBySupportId = async (req, reply) => { totalMasters: Object.keys(masterMap).length, disconnectedIssues: Object.values(masterMap) }); - } catch (error) { console.error("Error fetching disconnected issues:", error); return reply.code(500).send({ error: "Internal server error" }); } }; + // exports.getRemoveConnectedMastersWithSlaves = async (req, reply) => { // try { // const { supportId } = req.params;