ticketId added

master^2
Bhaskar 4 months ago
parent 6fccf490fc
commit 5d3e6511b7

@ -4304,9 +4304,84 @@ const updateConnectedStatusOnly = async (customerId, hardwareId) => {
// } // }
// }); // });
const generateTicketId = () => {
return "AWTKT" + Date.now(); // Or use UUID or nanoid
};
// 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 = {
// ticketId: generateTicketId(),
// type: "GSM or LoRa Disconnected",
// masterHardwareId,
// hardwareId: masterHardwareId,
// hardwareIds: slaveHardwareIds,
// slaveNames: slaveNames,
// resolved: false,
// movedToCategory: false,
// lastTicketRaisedAt: formattedNow,
// createdAt: formattedNow,
// };
// console.log("newIssue",newIssue)
// supportRecord.issues.push(newIssue);
// supportRecord.lastTicketRaisedAt = formattedNow;
// await Support.findByIdAndUpdate(
// supportRecord._id,
// {
// $push: { issues: newIssue },
// $set: { lastTicketRaisedAt: formattedNow }
// },
// { new: true }
// );
// console.log("")
// 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 offset in ms const formattedNow = new Date(now.getTime() + 19800000)
.toISOString() .toISOString()
.replace("T", " ") .replace("T", " ")
.substring(0, 19); .substring(0, 19);
@ -4346,6 +4421,7 @@ const raiseATicketLikeLogic = async (supportRecord, masterHardwareId, slaveData
// Create new issue // Create new issue
const newIssue = { const newIssue = {
ticketId: generateTicketId(),
type: "GSM or LoRa Disconnected", type: "GSM or LoRa Disconnected",
masterHardwareId, masterHardwareId,
hardwareId: masterHardwareId, hardwareId: masterHardwareId,
@ -4357,14 +4433,21 @@ const raiseATicketLikeLogic = async (supportRecord, masterHardwareId, slaveData
createdAt: formattedNow, createdAt: formattedNow,
}; };
supportRecord.issues.push(newIssue); console.log("newIssue", newIssue);
supportRecord.lastTicketRaisedAt = formattedNow;
// ✅ Atomic update
await Support.findByIdAndUpdate(
supportRecord._id,
{
$push: { issues: newIssue },
$set: { lastTicketRaisedAt: formattedNow }
},
{ new: true }
);
await supportRecord.save();
console.log(`✅ New ticket raised for ${masterHardwareId}`); 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...");
@ -5936,6 +6019,13 @@ exports.getDisconnectedIssuesBySupportId = async (req, reply) => {
const masterSensor = sensorMap[masterId]; const masterSensor = sensorMap[masterId];
if (!masterSensor || masterSensor.type !== "master") continue; if (!masterSensor || masterSensor.type !== "master") continue;
const stillUnresolved = allIssues.some(i =>
(i.hardwareId === masterSensor.hardwareId || i.masterHardwareId === masterSensor.hardwareId) &&
!i.resolved && !i.movedToCategory
);
if (!stillUnresolved) continue;
const latestMasterData = await IotData.findOne({ hardwareId: masterSensor.hardwareId }).sort({ date: -1 }).lean(); const latestMasterData = await IotData.findOne({ hardwareId: masterSensor.hardwareId }).sort({ date: -1 }).lean();
let gsmConnected = false; let gsmConnected = false;
@ -6706,15 +6796,23 @@ exports.getDisconnectedCustomerDetails = async (req, reply) => {
const allHardwareIds = [...hardwareIdsArray]; const allHardwareIds = [...hardwareIdsArray];
// const disconnectedSensorsRaw = await Insensors.find({
// connected_status: "disconnected",
// $or: [
// { connected_to: { $in: allHardwareIds } },
// { hardwareId: { $in: allHardwareIds } },
// { tankhardwareId: { $in: allHardwareIds } }
// ]
// }).lean();
const disconnectedSensorsRaw = await Insensors.find({ const disconnectedSensorsRaw = await Insensors.find({
connected_status: "disconnected",
$or: [ $or: [
{ connected_to: { $in: allHardwareIds } }, { connected_to: { $in: allHardwareIds } },
{ hardwareId: { $in: allHardwareIds } }, { hardwareId: { $in: allHardwareIds } },
{ tankhardwareId: { $in: allHardwareIds } } { tankhardwareId: { $in: allHardwareIds } }
] ]
}).lean(); }).lean();
const disconnectedSensors = disconnectedSensorsRaw.filter(sensor => { const disconnectedSensors = disconnectedSensorsRaw.filter(sensor => {
const ids = [ const ids = [
sensor.hardwareId?.trim().toLowerCase(), sensor.hardwareId?.trim().toLowerCase(),

@ -206,6 +206,7 @@ const installationschema = new mongoose.Schema({
}); });
const IssueSchema = new Schema({ const IssueSchema = new Schema({
ticketId: { type: String, unique: true },
type: { type: {
type: String, type: String,
enum: ["GSM Disconnected", "LoRa Disconnected", "GSM or LoRa Disconnected"], enum: ["GSM Disconnected", "LoRa Disconnected", "GSM or LoRa Disconnected"],

Loading…
Cancel
Save