diff --git a/src/controllers/installationController.js b/src/controllers/installationController.js index df4bddb1..6cc867b9 100644 --- a/src/controllers/installationController.js +++ b/src/controllers/installationController.js @@ -7774,7 +7774,6 @@ exports.getDisconnectedCustomerDetails = async (req, reply) => { } }); - // ✅ Exclude resolved hardwareIds from disconnected list const resolvedHardwareIds = new Set(); (supportRecord.resolvedIssues || []).forEach(issue => { if (issue.hardwareId) resolvedHardwareIds.add(issue.hardwareId.trim().toLowerCase()); @@ -7797,7 +7796,6 @@ exports.getDisconnectedCustomerDetails = async (req, reply) => { const allHardwareIds = [...hardwareIdsArray]; - // ✅ Fetch all relevant sensors (connected or disconnected) const relevantSensorsRaw = await Insensors.find({ $or: [ { connected_to: { $in: allHardwareIds } }, @@ -7806,7 +7804,17 @@ exports.getDisconnectedCustomerDetails = async (req, reply) => { ] }).lean(); - // ✅ Filter out categorized and resolved sensors + // ✅ Allow resolved hardwareIds that are part of new unresolved issues + const unresolvedHardwareIdSet = new Set(); + unresolvedIssues.forEach(issue => { + if (issue.hardwareId) unresolvedHardwareIdSet.add(issue.hardwareId.trim().toLowerCase()); + if (Array.isArray(issue.hardwareIds)) { + issue.hardwareIds.forEach(id => { + if (typeof id === "string") unresolvedHardwareIdSet.add(id.trim().toLowerCase()); + }); + } + }); + const sensors = relevantSensorsRaw.filter(sensor => { const ids = [ sensor.hardwareId?.trim().toLowerCase(), @@ -7814,7 +7822,8 @@ exports.getDisconnectedCustomerDetails = async (req, reply) => { sensor.tankhardwareId?.trim().toLowerCase() ]; return !ids.some(id => - existingCategorizedHardwareIds.has(id) || resolvedHardwareIds.has(id) + existingCategorizedHardwareIds.has(id) || + (resolvedHardwareIds.has(id) && !unresolvedHardwareIdSet.has(id)) ); }); @@ -7836,7 +7845,7 @@ exports.getDisconnectedCustomerDetails = async (req, reply) => { ]; const isCategorizedOrResolved = [sensorHw, sensorConnected, sensorHardwareId].some(id => - id && (existingCategorizedHardwareIds.has(id) || resolvedHardwareIds.has(id)) + id && (existingCategorizedHardwareIds.has(id) || (resolvedHardwareIds.has(id) && !unresolvedHardwareIdSet.has(id))) ); if (isCategorizedOrResolved) continue; @@ -7846,7 +7855,7 @@ exports.getDisconnectedCustomerDetails = async (req, reply) => { (sensorHardwareId && allIssueHardwareIds.includes(sensorHardwareId)) ) { for (const hw of allIssueHardwareIds) { - if (hw && !existingCategorizedHardwareIds.has(hw) && !resolvedHardwareIds.has(hw)) { + if (hw && !existingCategorizedHardwareIds.has(hw) && (!resolvedHardwareIds.has(hw) || unresolvedHardwareIdSet.has(hw))) { customerHardwareMap[custId].add(hw); } }