|
|
@ -4557,85 +4557,42 @@ const generateTicketId = () => {
|
|
|
|
// console.log(`✅ New ticket raised for ${masterHardwareId}`);
|
|
|
|
// 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 raiseATicketLikeLogic = async (supportRecord, masterHardwareId, slaveData = []) => {
|
|
|
|
// const now = new Date();
|
|
|
|
// 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()
|
|
|
|
// .toISOString()
|
|
|
|
// .replace("T", " ")
|
|
|
|
// .replace("T", " ")
|
|
|
|
// .substring(0, 19);
|
|
|
|
// .substring(0, 19);
|
|
|
|
|
|
|
|
|
|
|
|
// // ✅ If issue already exists anywhere for this hardwareId, SKIP
|
|
|
|
// // Check if already categorized
|
|
|
|
// const issueAlreadyExists = [
|
|
|
|
// const alreadyCategorized = supportRecord.categorizedIssues.some(
|
|
|
|
// ...supportRecord.issues,
|
|
|
|
// (catIssue) => catIssue.hardwareId === masterHardwareId
|
|
|
|
// ...supportRecord.categorizedIssues,
|
|
|
|
// );
|
|
|
|
// //...supportRecord.resolvedIssues
|
|
|
|
// if (alreadyCategorized) {
|
|
|
|
// ].some((issue) => issue.hardwareId === masterHardwareId);
|
|
|
|
// console.log(`⛔ Ticket for ${masterHardwareId} already categorized. Skipping.`);
|
|
|
|
|
|
|
|
// return;
|
|
|
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
|
|
// if (issueAlreadyExists) {
|
|
|
|
// // Check for existing unresolved, uncategorized ticket for same master
|
|
|
|
// console.log(`⛔ Issue already exists for ${masterHardwareId}. Not raising again.`);
|
|
|
|
// 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;
|
|
|
|
// return;
|
|
|
|
// }
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
|
|
// // ✅ Prepare slave hardwareIds and names
|
|
|
|
// // Prepare slave hardwareIds and names
|
|
|
|
// const slaveHardwareIds = slaveData.map((s) => s.tankhardwareId).sort();
|
|
|
|
// const slaveHardwareIds = slaveData.map((slave) => slave.tankhardwareId).sort();
|
|
|
|
// const slaveNames = slaveData.map((s) => s.sensorName || s.tankName || "").sort();
|
|
|
|
// const slaveNames = slaveData.map((slave) => slave.sensorName || slave.tankName || "").sort();
|
|
|
|
|
|
|
|
|
|
|
|
// // ✅ Create new issue
|
|
|
|
// // Create new issue
|
|
|
|
// const newIssue = {
|
|
|
|
// const newIssue = {
|
|
|
|
// type: "GSM or LoRa Disconnected",
|
|
|
|
// type: "GSM or LoRa Disconnected",
|
|
|
|
// masterHardwareId,
|
|
|
|
// masterHardwareId,
|
|
|
@ -4655,6 +4612,49 @@ const raiseATicketLikeLogic = async (supportRecord, masterHardwareId, slaveData
|
|
|
|
// console.log(`✅ New ticket raised for ${masterHardwareId}`);
|
|
|
|
// 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 () => {
|
|
|
|
cron.schedule("*/1 * * * *", async () => {
|
|
|
|
try {
|
|
|
|
try {
|
|
|
|