diff --git a/src/controllers/installationController.js b/src/controllers/installationController.js index 9f33d605..574b96ce 100644 --- a/src/controllers/installationController.js +++ b/src/controllers/installationController.js @@ -3586,10 +3586,12 @@ const raiseATicketLikeLogic = async (customerId, connected_to) => { const existingIssues = supportRecord.issues || []; + // Find existing unresolved issue const existingMasterIssue = existingIssues.find( issue => issue.hardwareId === connected_to && - issue.type === "GSM or LoRa Disconnected" + issue.type === "GSM or LoRa Disconnected" && + issue.resolved !== true // <-- only unresolved ); const alreadyReportedSlaves = new Set( @@ -3614,7 +3616,7 @@ const raiseATicketLikeLogic = async (customerId, connected_to) => { (newSlaveHardwareIds.length > 0 || !existingMasterIssue) ) { if (!existingMasterIssue) { - // Create new issue + // Create new issue with resolved: false const newIssue = { type: "GSM or LoRa Disconnected", masterHardwareId: connected_to, @@ -3623,7 +3625,8 @@ const raiseATicketLikeLogic = async (customerId, connected_to) => { slaveNames: newSlaveNames, message: `Master ${connected_to} is disconnected along with ${newSlaveHardwareIds.length} new slave(s)`, disconnectedAt: lastDataTime, - lastTicketRaisedAt: formattedNow // <-- NEW FIELD + lastTicketRaisedAt: formattedNow, + resolved: false // <--- add resolved flag here }; await Support.findOneAndUpdate( @@ -3634,7 +3637,7 @@ const raiseATicketLikeLogic = async (customerId, connected_to) => { } ); } else { - // Update existing issue + // Update existing unresolved issue only await Support.findOneAndUpdate( { supportId: "AWHYSU64" }, { @@ -3649,7 +3652,7 @@ const raiseATicketLikeLogic = async (customerId, connected_to) => { }, { arrayFilters: [ - { "elem.hardwareId": connected_to, "elem.type": "GSM or LoRa Disconnected" } + { "elem.hardwareId": connected_to, "elem.type": "GSM or LoRa Disconnected", "elem.resolved": false } ] } );