duplicate issues

master^2
Bhaskar 4 months ago
parent c49ab3acdd
commit 91963ac612

@ -4038,57 +4038,57 @@ const updateConnectedStatusOnly = async (customerId, hardwareId) => {
const raiseATicketLikeLogic = async (supportRecord, masterHardwareId, slaveData = []) => { // const raiseATicketLikeLogic = async (supportRecord, masterHardwareId, slaveData = []) => {
const now = new Date(); // const now = new Date();
const formattedNow = new Date(now.getTime() + 19800000) // +05:30 offset in ms // const formattedNow = new Date(now.getTime() + 19800000) // +05:30 offset in ms
.toISOString() // .toISOString()
.replace("T", " ") // .replace("T", " ")
.substring(0, 19); // .substring(0, 19);
// Check if already categorized // // Check if already categorized
const alreadyCategorized = supportRecord.categorizedIssues.some( // const alreadyCategorized = supportRecord.categorizedIssues.some(
(catIssue) => catIssue.hardwareId === masterHardwareId // (catIssue) => catIssue.hardwareId === masterHardwareId
); // );
// Check if already raised and unresolved & not categorized // // Check if already raised and unresolved & not categorized
const alreadyRaisedUnresolved = supportRecord.issues.some( // const alreadyRaisedUnresolved = supportRecord.issues.some(
(issue) => // (issue) =>
issue.hardwareId === masterHardwareId && // issue.hardwareId === masterHardwareId &&
issue.resolved === false && // issue.resolved === false &&
issue.movedToCategory === false // issue.movedToCategory === false
); // );
if (alreadyCategorized) { // if (alreadyCategorized) {
console.log(`⛔ Ticket for ${masterHardwareId} already categorized. Skipping.`); // console.log(`⛔ Ticket for ${masterHardwareId} already categorized. Skipping.`);
return; // return;
} // }
if (alreadyRaisedUnresolved) { // if (alreadyRaisedUnresolved) {
console.log(`⛔ Unresolved ticket already exists for ${masterHardwareId}. Skipping.`); // console.log(`⛔ Unresolved ticket already exists for ${masterHardwareId}. Skipping.`);
return; // return;
} // }
const slaveHardwareIds = slaveData.map((slave) => slave.tankhardwareId); // const slaveHardwareIds = slaveData.map((slave) => slave.tankhardwareId);
const slaveNames = slaveData.map((slave) => slave.sensorName || slave.tankName || ""); // const slaveNames = slaveData.map((slave) => slave.sensorName || slave.tankName || "");
const newIssue = { // const newIssue = {
type: "GSM or LoRa Disconnected", // type: "GSM or LoRa Disconnected",
masterHardwareId, // masterHardwareId,
hardwareId: masterHardwareId, // hardwareId: masterHardwareId,
hardwareIds: slaveHardwareIds, // hardwareIds: slaveHardwareIds,
slaveNames: slaveNames, // slaveNames: slaveNames,
resolved: false, // resolved: false,
movedToCategory: false, // movedToCategory: false,
lastTicketRaisedAt: formattedNow, // lastTicketRaisedAt: formattedNow,
createdAt: formattedNow, // createdAt: formattedNow,
}; // };
supportRecord.issues.push(newIssue); // supportRecord.issues.push(newIssue);
supportRecord.lastTicketRaisedAt = formattedNow; // supportRecord.lastTicketRaisedAt = formattedNow;
await supportRecord.save(); // await supportRecord.save();
console.log(`✅ New ticket raised for ${masterHardwareId}`); // console.log(`✅ New ticket raised for ${masterHardwareId}`);
}; // };
@ -4304,6 +4304,67 @@ const raiseATicketLikeLogic = async (supportRecord, masterHardwareId, slaveData
// } // }
// }); // });
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}`);
};
cron.schedule("*/1 * * * *", async () => { cron.schedule("*/1 * * * *", async () => {
try { try {
console.log("🔁 Running auto-disconnect ticket check..."); console.log("🔁 Running auto-disconnect ticket check...");
@ -4325,7 +4386,7 @@ cron.schedule("*/1 * * * *", async () => {
if (!customerId || !hardwareId) continue; if (!customerId || !hardwareId) continue;
// ✅ Update GSM and LoRa connection statuses // ✅ Update GSM and LoRa connection statuses
// await updateConnectedStatusOnly(customerId, hardwareId); await updateConnectedStatusOnly(customerId, hardwareId);
// 🔄 Re-fetch updated master and slaves // 🔄 Re-fetch updated master and slaves
const updatedMaster = await Insensors.findOne({ hardwareId, customerId }).lean(); const updatedMaster = await Insensors.findOne({ hardwareId, customerId }).lean();

Loading…
Cancel
Save