master^2
Bhaskar 5 months ago
parent 99be0d4fcd
commit 0cc50fe03b

@ -2688,7 +2688,7 @@ exports.raiseATicketBuildingDetails = async (req, reply) => {
exports.raiseATicketSlave = async (req, reply) => { exports.raiseATicketSlave = async (req, reply) => {
try { try {
const { customerId, connected_to, tankHardwareId } = req.params; // Now tankHardwareId from params const { customerId, connected_to, tankHardwareId } = req.params;
if (!customerId || !connected_to) { if (!customerId || !connected_to) {
return reply.code(400).send({ error: "customerId and connected_to are required" }); return reply.code(400).send({ error: "customerId and connected_to are required" });
@ -2700,7 +2700,7 @@ exports.raiseATicketSlave = async (req, reply) => {
return reply.code(404).send({ message: "No sensors found for this customer." }); return reply.code(404).send({ message: "No sensors found for this customer." });
} }
const masterSensor = sensors.find(s => (s.hardwareId?.trim() === connected_to.trim())); const masterSensor = sensors.find(s => s.hardwareId?.trim() === connected_to.trim());
if (!masterSensor) { if (!masterSensor) {
return reply.code(404).send({ message: "Master hardwareId not found." }); return reply.code(404).send({ message: "Master hardwareId not found." });
@ -2712,20 +2712,20 @@ exports.raiseATicketSlave = async (req, reply) => {
return reply.code(404).send({ message: "No IoT data found for this hardwareId." }); return reply.code(404).send({ message: "No IoT data found for this hardwareId." });
} }
const indiaTime = moment.tz(latestMasterRecord.date, "Asia/Kolkata");
const now = moment.tz("Asia/Kolkata"); const now = moment.tz("Asia/Kolkata");
const masterTime = moment.tz(latestMasterRecord.date, "Asia/Kolkata");
const masterDiff = now.diff(masterTime, "minutes");
const diffInMinutesMaster = now.diff(indiaTime, "minutes"); const masterDisconnected = masterDiff > 1 ? [{
const masterDisconnected = diffInMinutesMaster > 1 ? [{
hardwareId: connected_to, hardwareId: connected_to,
masterName: masterSensor.tankName, masterName: masterSensor.tankName || "Unknown Master",
// disconnectedAt: now.format("DD-MM-YYYY HH:mm:ss"),
}] : []; }] : [];
let connectedSlaves = sensors.filter(sensor => sensor.connected_to?.trim() === connected_to.trim()); let connectedSlaves = sensors.filter(sensor =>
sensor.connected_to?.trim() === connected_to.trim() &&
sensor.type === "slave"
);
// If tankHardwareId is provided, filter for that specific slave
if (tankHardwareId) { if (tankHardwareId) {
connectedSlaves = connectedSlaves.filter(s => s.hardwareId?.trim() === tankHardwareId.trim()); connectedSlaves = connectedSlaves.filter(s => s.hardwareId?.trim() === tankHardwareId.trim());
} }
@ -2736,15 +2736,15 @@ exports.raiseATicketSlave = async (req, reply) => {
const slaveId = slave.hardwareId?.trim(); const slaveId = slave.hardwareId?.trim();
const matchedTank = latestMasterRecord.tanks.find(tank => tank.tankhardwareId === slaveId); const matchedTank = latestMasterRecord.tanks.find(tank => tank.tankhardwareId === slaveId);
if (matchedTank && matchedTank.date) { if (matchedTank?.date) {
const tankTime = moment.tz(matchedTank.date, "Asia/Kolkata"); const tankTime = moment.tz(matchedTank.date, "Asia/Kolkata");
const loraDiffInMinutes = now.diff(tankTime, "minutes"); const loraDiff = now.diff(tankTime, "minutes");
if (loraDiffInMinutes > 1) { if (loraDiff > 1) {
disconnectedSlaves.push({ disconnectedSlaves.push({
hardwareId: connected_to, hardwareId: connected_to,
slaveHardwareId: slaveId, slaveHardwareId: slaveId,
slaveName: slave.tankName slaveName: slave.tankName || "Unknown Slave"
}); });
} }
} }
@ -2752,22 +2752,46 @@ exports.raiseATicketSlave = async (req, reply) => {
const issuesToAdd = []; const issuesToAdd = [];
// Check for existing GSM issue
if (masterDisconnected.length > 0) { if (masterDisconnected.length > 0) {
const existingGsmIssue = await Support.findOne({
"issues.hardwareId": connected_to,
"issues.type": "GSM Disconnected"
});
if (!existingGsmIssue) {
issuesToAdd.push({ issuesToAdd.push({
type: "GSM Disconnected", type: "GSM Disconnected",
hardwareId: connected_to, hardwareId: connected_to,
message: `Master GSM disconnected - ${connected_to}`, message: `Master GSM disconnected - ${connected_to}`
// disconnectedAt: now.format("DD-MM-YYYY HH:mm:ss") });
}
}
// Check for new LoRa issues
const newSlaveHardwareIds = [];
const newSlaveNames = [];
for (const slave of disconnectedSlaves) {
const existingSlaveIssue = await Support.findOne({
"issues.hardwareIds": slave.slaveHardwareId,
"issues.masterHardwareId": connected_to,
"issues.type": "LoRa Disconnected"
}); });
if (!existingSlaveIssue) {
newSlaveHardwareIds.push(slave.slaveHardwareId);
newSlaveNames.push(slave.slaveName);
}
} }
if (disconnectedSlaves.length > 0) { if (newSlaveHardwareIds.length > 0) {
issuesToAdd.push({ issuesToAdd.push({
type: "LoRa Disconnected", type: "LoRa Disconnected",
hardwareIds: disconnectedSlaves.map(d => d.slaveHardwareId), masterHardwareId: connected_to,
slaveNames: disconnectedSlaves.map(d => d.slaveName), hardwareIds: newSlaveHardwareIds,
message: "Slaves LoRa disconnected", slaveNames: newSlaveNames,
//disconnectedAt: now.format("DD-MM-YYYY HH:mm:ss") message: `Slaves LoRa disconnected under master ${connected_to}`
}); });
} }
@ -2798,7 +2822,7 @@ exports.raiseATicketSlave = async (req, reply) => {
}); });
} catch (error) { } catch (error) {
console.error("Error raising ticket:", error); console.error("Error raising ticket (slave):", error);
return reply.code(500).send({ error: "Internal server error" }); return reply.code(500).send({ error: "Internal server error" });
} }
}; };

Loading…
Cancel
Save