diff --git a/src/controllers/installationController.js b/src/controllers/installationController.js index 0edc6d3e..aa583f37 100644 --- a/src/controllers/installationController.js +++ b/src/controllers/installationController.js @@ -4557,85 +4557,42 @@ const generateTicketId = () => { // console.log(`✅ New ticket raised for ${masterHardwareId}`); // }; -const raiseATicketLikeLogic = async (supportRecord, masterHardwareId, slaveData = []) => { - const now = new Date(); - const formattedNow = new Date(now.getTime() + 19800000) // +05:30 offset in ms - .toISOString() - .replace("T", " ") - .substring(0, 19); - - // Check if already categorized - const alreadyCategorized = supportRecord.categorizedIssues.some( - (catIssue) => catIssue.hardwareId === masterHardwareId - ); - if (alreadyCategorized) { - console.log(`⛔ Ticket for ${masterHardwareId} already categorized. Skipping.`); - return; - } - - // Check for existing unresolved, uncategorized ticket for same master - const duplicateExists = supportRecord.issues.some((issue) => { - return ( - issue.hardwareId === masterHardwareId && - issue.masterHardwareId === masterHardwareId && - issue.resolved === false && - issue.movedToCategory === false - ); - }); - - if (duplicateExists) { - console.log(`⛔ Duplicate unresolved issue already exists for ${masterHardwareId}. Skipping.`); - return; - } - - // Prepare slave hardwareIds and names - const slaveHardwareIds = slaveData.map((slave) => slave.tankhardwareId).sort(); - const slaveNames = slaveData.map((slave) => slave.sensorName || slave.tankName || "").sort(); - - // Create new issue - const newIssue = { - type: "GSM or LoRa Disconnected", - masterHardwareId, - hardwareId: masterHardwareId, - hardwareIds: slaveHardwareIds, - slaveNames: slaveNames, - resolved: false, - movedToCategory: false, - lastTicketRaisedAt: formattedNow, - createdAt: formattedNow, - }; - - supportRecord.issues.push(newIssue); - supportRecord.lastTicketRaisedAt = formattedNow; - - await supportRecord.save(); - console.log(`✅ New ticket raised for ${masterHardwareId}`); -}; - // const raiseATicketLikeLogic = async (supportRecord, masterHardwareId, slaveData = []) => { // const now = new Date(); -// const formattedNow = new Date(now.getTime() + 19800000) // +05:30 IST offset +// const formattedNow = new Date(now.getTime() + 19800000) // +05:30 offset in ms // .toISOString() // .replace("T", " ") // .substring(0, 19); -// // ✅ If issue already exists anywhere for this hardwareId, SKIP -// const issueAlreadyExists = [ -// ...supportRecord.issues, -// ...supportRecord.categorizedIssues, -// //...supportRecord.resolvedIssues -// ].some((issue) => issue.hardwareId === masterHardwareId); +// // Check if already categorized +// const alreadyCategorized = supportRecord.categorizedIssues.some( +// (catIssue) => catIssue.hardwareId === masterHardwareId +// ); +// if (alreadyCategorized) { +// console.log(`⛔ Ticket for ${masterHardwareId} already categorized. Skipping.`); +// return; +// } + +// // Check for existing unresolved, uncategorized ticket for same master +// const duplicateExists = supportRecord.issues.some((issue) => { +// return ( +// issue.hardwareId === masterHardwareId && +// issue.masterHardwareId === masterHardwareId && +// issue.resolved === false && +// issue.movedToCategory === false +// ); +// }); -// if (issueAlreadyExists) { -// console.log(`⛔ Issue already exists for ${masterHardwareId}. Not raising again.`); +// if (duplicateExists) { +// console.log(`⛔ Duplicate unresolved issue already exists for ${masterHardwareId}. Skipping.`); // return; // } -// // ✅ Prepare slave hardwareIds and names -// const slaveHardwareIds = slaveData.map((s) => s.tankhardwareId).sort(); -// const slaveNames = slaveData.map((s) => s.sensorName || s.tankName || "").sort(); +// // Prepare slave hardwareIds and names +// const slaveHardwareIds = slaveData.map((slave) => slave.tankhardwareId).sort(); +// const slaveNames = slaveData.map((slave) => slave.sensorName || slave.tankName || "").sort(); -// // ✅ Create new issue +// // Create new issue // const newIssue = { // type: "GSM or LoRa Disconnected", // masterHardwareId, @@ -4655,6 +4612,49 @@ const raiseATicketLikeLogic = async (supportRecord, masterHardwareId, slaveData // console.log(`✅ New ticket raised for ${masterHardwareId}`); // }; +const raiseATicketLikeLogic = async (supportRecord, masterHardwareId, slaveData = []) => { + const now = new Date(); + const formattedNow = new Date(now.getTime() + 19800000) // +05:30 IST offset + .toISOString() + .replace("T", " ") + .substring(0, 19); + + // ✅ If issue already exists anywhere for this hardwareId, SKIP + const issueAlreadyExists = [ + ...supportRecord.issues, + ...supportRecord.categorizedIssues, + //...supportRecord.resolvedIssues + ].some((issue) => issue.hardwareId === masterHardwareId); + + if (issueAlreadyExists) { + console.log(`⛔ Issue already exists for ${masterHardwareId}. Not raising again.`); + return; + } + + // ✅ Prepare slave hardwareIds and names + const slaveHardwareIds = slaveData.map((s) => s.tankhardwareId).sort(); + const slaveNames = slaveData.map((s) => s.sensorName || s.tankName || "").sort(); + + // ✅ Create new issue + const newIssue = { + type: "GSM or LoRa Disconnected", + masterHardwareId, + hardwareId: masterHardwareId, + hardwareIds: slaveHardwareIds, + slaveNames: slaveNames, + resolved: false, + movedToCategory: false, + lastTicketRaisedAt: formattedNow, + createdAt: formattedNow, + }; + + supportRecord.issues.push(newIssue); + supportRecord.lastTicketRaisedAt = formattedNow; + + await supportRecord.save(); + console.log(`✅ New ticket raised for ${masterHardwareId}`); +}; + cron.schedule("*/1 * * * *", async () => { try {