diff --git a/src/controllers/installationController.js b/src/controllers/installationController.js index 9c806558..cdedeab5 100644 --- a/src/controllers/installationController.js +++ b/src/controllers/installationController.js @@ -3969,13 +3969,13 @@ exports.getDisconnectedIssuesBySupportId = async (req, reply) => { const allIssues = supportRecord.issues || []; const hardwareSet = new Set(); - // Collect hardwareId and masterHardwareId for (const issue of allIssues) { if (issue.hardwareId) hardwareSet.add(issue.hardwareId); if (issue.masterHardwareId) hardwareSet.add(issue.masterHardwareId); } const hardwareIds = [...hardwareSet]; + const sensors = await Insensors.find({ $or: [ { hardwareId: { $in: hardwareIds } }, @@ -4011,7 +4011,6 @@ exports.getDisconnectedIssuesBySupportId = async (req, reply) => { const masterSensor = sensorMap[masterId]; if (!masterSensor || masterSensor.type !== "master") continue; - // If master not already added if (!masterMap[masterSensor.hardwareId]) { const enriched = orderMap[masterSensor.hardwareId] || {}; masterMap[masterSensor.hardwareId] = { @@ -4036,17 +4035,20 @@ exports.getDisconnectedIssuesBySupportId = async (req, reply) => { } const master = masterMap[masterSensor.hardwareId]; - - // ✅ Always fetch slaves using connected_to, even if currently connected const connectedSlaves = await Insensors.find({ connected_to: masterSensor.hardwareId, type: "slave" }).lean(); + const slaveSet = new Set(master.connected_slaves.map(s => s.hardwareId)); + for (const slave of connectedSlaves) { - // ✅ Do not skip slaves based on current connection status - master.connected_slaves.push({ - hardwareId: slave.tankhardwareId || slave.hardwareId, + const slaveHardwareId = slave.tankhardwareId || slave.hardwareId; + if (slaveSet.has(slaveHardwareId)) continue; // Skip duplicates + slaveSet.add(slaveHardwareId); + + const slaveEnriched = { + hardwareId: slaveHardwareId, tankName: slave.tankName || "", location: slave.location || "", connected_status: slave.connected_status, @@ -4061,8 +4063,9 @@ exports.getDisconnectedIssuesBySupportId = async (req, reply) => { tankHeight: slave.tankHeight, support_lora_last_check_time: slave.support_lora_last_check_time, team_member_support_lora_last_check_time: slave.team_member_support_lora_last_check_time - }); + }; + master.connected_slaves.push(slaveEnriched); master.connected_slave_count++; } } @@ -4080,6 +4083,8 @@ exports.getDisconnectedIssuesBySupportId = async (req, reply) => { } }; + + exports.getDisconnectedCustomerDetails = async (req, reply) => { try { const { supportId } = req.params;