diff --git a/src/controllers/installationController.js b/src/controllers/installationController.js index 75d89e40..1ed7acd6 100644 --- a/src/controllers/installationController.js +++ b/src/controllers/installationController.js @@ -4497,6 +4497,66 @@ const generateTicketId = () => { // } // }); +// 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; +// } + +// // Prepare slave hardwareIds and names +// const slaveHardwareIds = slaveData.map((slave) => slave.tankhardwareId).sort(); +// const slaveNames = slaveData.map((slave) => slave.sensorName || slave.tankName || "").sort(); + +// // Check for existing unresolved and not moved-to-category issue +// const duplicateExists = supportRecord.issues.some((issue) => { +// const existingSlaveIds = (issue.hardwareIds || []).sort(); +// const existingSlaveNames = (issue.slaveNames || []).sort(); + +// return ( +// issue.hardwareId === masterHardwareId && +// issue.masterHardwareId === masterHardwareId && +// issue.resolved === false && +// issue.movedToCategory === false && +// JSON.stringify(existingSlaveIds) === JSON.stringify(slaveHardwareIds) && +// JSON.stringify(existingSlaveNames) === JSON.stringify(slaveNames) +// ); +// }); + +// if (duplicateExists) { +// console.log(`⛔ Duplicate unresolved issue already exists for ${masterHardwareId}. Skipping.`); +// return; +// } + +// // 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 offset in ms @@ -4513,22 +4573,13 @@ const raiseATicketLikeLogic = async (supportRecord, masterHardwareId, slaveData return; } - // Prepare slave hardwareIds and names - const slaveHardwareIds = slaveData.map((slave) => slave.tankhardwareId).sort(); - const slaveNames = slaveData.map((slave) => slave.sensorName || slave.tankName || "").sort(); - - // Check for existing unresolved and not moved-to-category issue + // Check for existing unresolved, uncategorized ticket for same master const duplicateExists = supportRecord.issues.some((issue) => { - const existingSlaveIds = (issue.hardwareIds || []).sort(); - const existingSlaveNames = (issue.slaveNames || []).sort(); - return ( issue.hardwareId === masterHardwareId && issue.masterHardwareId === masterHardwareId && issue.resolved === false && - issue.movedToCategory === false && - JSON.stringify(existingSlaveIds) === JSON.stringify(slaveHardwareIds) && - JSON.stringify(existingSlaveNames) === JSON.stringify(slaveNames) + issue.movedToCategory === false ); }); @@ -4537,6 +4588,10 @@ const raiseATicketLikeLogic = async (supportRecord, masterHardwareId, slaveData 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", @@ -4557,7 +4612,6 @@ const raiseATicketLikeLogic = async (supportRecord, masterHardwareId, slaveData console.log(`✅ New ticket raised for ${masterHardwareId}`); }; - cron.schedule("*/1 * * * *", async () => { try { console.log("🔁 Running auto-disconnect ticket check...");