support all disconnect issues

master^2
Bhaskar 5 months ago
parent 0198f4af14
commit a39e198cb9

@ -2760,17 +2760,19 @@ exports.raiseATicket = async (req, reply) => {
if (issuesToAdd.length > 0) { if (issuesToAdd.length > 0) {
const supportRecord = await Support.findOne({ supportId: "AWHYSU64" }); const supportRecord = await Support.findOne({ supportId: "AWHYSU64" });
if (supportRecord) { if (supportRecord) {
await Support.findOneAndUpdate( await Support.findOneAndUpdate(
{ _id: supportRecord._id }, { supportId: "AWHYSU64" },
{ {
$push: { issues: { $each: issuesToAdd } }, $push: { issues: { $each: issuesToAdd } },
updatedAt: new Date() $set: { updatedAt: new Date(), lastTicketRaisedAt: moment().tz("Asia/Kolkata").format("YYYY-MM-DD HH:mm:ss") }
} }
); );
} }
} }
const masterDetails = { const masterDetails = {
hardwareId: connected_to, hardwareId: connected_to,
masterName: masterSensor.masterName || orderMap[connected_to]?.masterName || null, masterName: masterSensor.masterName || orderMap[connected_to]?.masterName || null,
@ -3044,21 +3046,15 @@ exports.raiseATicketBuildingDetails = async (req, reply) => {
}; };
exports.raiseATicketSlave = async (req, reply) => { exports.raiseATicketSlave = async (req, reply) => {
try { try {
const { customerId, connected_to, tankHardwareId } = req.params; const { customerId, connected_to } = 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" });
} }
const sensors = await Insensors.find({ customerId }); const sensors = await Insensors.find({ customerId });
if (!sensors.length) {
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) {
@ -3071,121 +3067,385 @@ 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 now = moment.tz("Asia/Kolkata"); const now = moment().tz("Asia/Kolkata");
const masterTime = moment.tz(latestMasterRecord.date, "Asia/Kolkata"); const masterTime = moment.tz(latestMasterRecord.date, "Asia/Kolkata");
const masterDiff = now.diff(masterTime, "minutes"); const diff = now.diff(masterTime, "minutes");
const masterDisconnected = masterDiff > 1 ? [{ const gsm_connected_status = diff <= 1 ? "connected" : "disconnected";
const gsmStatus = gsm_connected_status === "connected" ? "GSM Connected" : "GSM Disconnected";
const formattedTime = masterTime.format("HH:mm:ss");
const formattedDate = masterTime.format("DD-MM-YYYY");
const tanks = (latestMasterRecord.tanks || []).map(tank => {
const tankTime = moment.tz(tank.date, "Asia/Kolkata");
const timeDiff = now.diff(tankTime, "minutes");
return {
...tank,
time: tankTime.format("HH:mm:ss"),
connected_status: timeDiff <= 1 ? "connected" : "disconnected"
};
});
const responseData = {
hardwareId: connected_to, hardwareId: connected_to,
masterName: masterSensor.tankName || "Unknown Master", gsm_connected_status,
}] : []; gsmStatus,
connected_gsm_date: formattedDate,
connected_gsm_time: formattedTime,
gsm_last_check_time: now.format("DD-MM-YYYY HH:mm:ss"),
tanks,
date: latestMasterRecord.date,
time: formattedTime
};
let connectedSlaves = sensors.filter(sensor => return reply.send({
sensor.connected_to?.trim() === connected_to.trim() && status_code: 200,
sensor.type === "slave" message: "Success",
); data: responseData
});
if (tankHardwareId) { } catch (error) {
connectedSlaves = connectedSlaves.filter(s => s.hardwareId?.trim() === tankHardwareId.trim()); console.error("Error in raiseATicketSlave:", error);
return reply.code(500).send({ error: "Internal server error" });
} }
};
const disconnectedSlaves = [];
for (const slave of connectedSlaves) {
const slaveId = slave.hardwareId?.trim();
const matchedTank = latestMasterRecord.tanks.find(tank => tank.tankhardwareId === slaveId);
if (matchedTank?.date) {
const tankTime = moment.tz(matchedTank.date, "Asia/Kolkata");
const loraDiff = now.diff(tankTime, "minutes");
if (loraDiff > 1) {
disconnectedSlaves.push({
hardwareId: connected_to,
slaveHardwareId: slaveId,
slaveName: slave.tankName || "Unknown Slave"
});
}
}
}
const issuesToAdd = [];
// Check for existing GSM issue // exports.getDisconnectedIssuesBySupportId = async (req, reply) => {
if (masterDisconnected.length > 0) { // try {
const existingGsmIssue = await Support.findOne({ // const { supportId } = req.params;
"issues.hardwareId": connected_to,
"issues.type": "GSM Disconnected" // if (!supportId) {
}); // return reply.code(400).send({ error: "supportId is required" });
// }
// const supportRecord = await Support.findOne({ supportId }).lean();
// if (!supportRecord) {
// return reply.code(404).send({ message: "No support record found for this supportId" });
// }
// const allIssues = supportRecord.issues || [];
// const hardwareSet = new Set();
// // Collect all hardware IDs from issues
// for (const issue of allIssues) {
// if (issue.hardwareId) hardwareSet.add(issue.hardwareId); // GSM
// if (Array.isArray(issue.hardwareIds)) {
// issue.hardwareIds.forEach(id => hardwareSet.add(id)); // LoRa slaves
// }
// if (issue.masterHardwareId) hardwareSet.add(issue.masterHardwareId); // LoRa master
// }
// const hardwareIds = [...hardwareSet];
// const sensors = await Insensors.find({ hardwareId: { $in: hardwareIds } }).lean();
// console.log("sensors",sensors)
// // Map sensors by hardwareId
// const sensorMap = {};
// for (const sensor of sensors) {
// sensorMap[sensor.hardwareId] = sensor;
// }
// const masterMap = {};
// for (const issue of allIssues) {
// // GSM Disconnected
// if (issue.type === "GSM or LoRa Disconnected" && issue.hardwareId) {
// const sensor = sensorMap[issue.hardwareId];
// if (sensor && sensor.type === "master") {
// masterMap[sensor.hardwareId] = {
// hardwareId: sensor.hardwareId,
// masterName: sensor.masterName || null,
// location: sensor.location || "",
// type: "master",
// connected_status: sensor.connected_status,
// gsm_last_check_time: sensor.gsm_last_check_time,
// gsm_last_disconnect_time: sensor.gsm_last_disconnect_time,
// connected_gsm_date: sensor.connected_gsm_date,
// connected_gsm_time: sensor.connected_gsm_time,
// connected_lora_date: sensor.connected_lora_date,
// connected_lora_time: sensor.connected_lora_time,
// support_gsm_last_check_time: sensor.support_gsm_last_check_time,
// connected_slave_count: 0,
// connected_slaves: []
// };
// }
// }
if (!existingGsmIssue) { // // LoRa Disconnected
issuesToAdd.push({ // if (issue.type === "GSM or LoRa Disconnected" && issue.masterHardwareId) {
type: "GSM Disconnected", // const masterSensor = sensorMap[issue.masterHardwareId];
hardwareId: connected_to, // if (!masterSensor || masterSensor.type !== "master") continue;
message: `Master GSM disconnected - ${connected_to}`
}); // if (!masterMap[masterSensor.hardwareId]) {
} // masterMap[masterSensor.hardwareId] = {
} // hardwareId: masterSensor.hardwareId,
// masterName: masterSensor.masterName || null,
// location: masterSensor.location || "",
// type: "master",
// connected_status: masterSensor.connected_status,
// gsm_last_check_time: masterSensor.gsm_last_check_time,
// gsm_last_disconnect_time: masterSensor.gsm_last_disconnect_time,
// connected_gsm_date: masterSensor.connected_gsm_date,
// connected_gsm_time: masterSensor.connected_gsm_time,
// connected_lora_date: masterSensor.connected_lora_date,
// connected_lora_time: masterSensor.connected_lora_time,
// support_lora_last_check_time: masterSensor.support_lora_last_check_time,
// connected_slave_count: 0,
// connected_slaves: []
// };
// }
// Check for new LoRa issues // const master = masterMap[masterSensor.hardwareId];
const newSlaveHardwareIds = [];
const newSlaveNames = []; // // First try from issue.hardwareIds
// let slaveIds = Array.isArray(issue.hardwareIds) ? issue.hardwareIds : [];
// // If empty, fallback to slaves connected to this master
// // If empty, fallback to slaves connected to this master's tankHardwareId
// console.log("slaveIds",slaveIds)
// if (slaveIds.length === 0) {
// // fallback: find slaves connected to this master hardwareId
// const fallbackSlaves = await Insensors.find({
// connected_to: issue.masterHardwareId, // or masterSensor.hardwareId
// type: "slave"
// }).lean();
// console.log("fallbackSlaves", fallbackSlaves);
// for (const slaveSensor of fallbackSlaves) {
// master.connected_slaves.push({
// hardwareId: slaveSensor.hardwareId,
// tankName: slaveSensor.tankName || "",
// location: slaveSensor.location || "",
// connected_status: slaveSensor.connected_status,
// connected_lora_time: slaveSensor.connected_lora_time,
// connected_lora_date: slaveSensor.connected_lora_date,
// lora_last_check_time: slaveSensor.lora_last_check_time,
// lora_last_disconnect_time: slaveSensor.lora_last_disconnect_time,
// connected_to: slaveSensor.connected_to,
// masterName: master.masterName,
// type: "slave",
// typeOfWater: slaveSensor.typeOfWater,
// tankHeight: slaveSensor.tankHeight,
// support_lora_last_check_time: slaveSensor.support_lora_last_check_time,
// });
// master.connected_slave_count++;
// }
// }
// else {
// // Populate slaves based on provided hardwareIds
// for (const slaveId of slaveIds) {
// const slaveSensor = sensorMap[slaveId];
// if (slaveSensor && slaveSensor.type === "slave") {
// master.connected_slaves.push({
// hardwareId: slaveSensor.hardwareId,
// tankName: slaveSensor.tankName || "",
// location: slaveSensor.location || "",
// connected_status: slaveSensor.connected_status,
// connected_lora_time: slaveSensor.connected_lora_time,
// connected_lora_date: slaveSensor.connected_lora_date,
// lora_last_check_time: slaveSensor.lora_last_check_time,
// lora_last_disconnect_time: slaveSensor.lora_last_disconnect_time,
// connected_to: slaveSensor.connected_to,
// masterName: master.masterName,
// type: "slave",
// typeOfWater: slaveSensor.typeOfWater,
// tankHeight: slaveSensor.tankHeight,
// support_lora_last_check_time: slaveSensor.support_lora_last_check_time,
// });
// master.connected_slave_count++;
// }
// }
// }
// }
// }
for (const slave of disconnectedSlaves) { // const finalResponse = Object.values(masterMap);
const existingSlaveIssue = await Support.findOne({
"issues.hardwareIds": slave.slaveHardwareId,
"issues.masterHardwareId": connected_to,
"issues.type": "LoRa Disconnected"
});
if (!existingSlaveIssue) { // return reply.send({
newSlaveHardwareIds.push(slave.slaveHardwareId); // status_code: 200,
newSlaveNames.push(slave.slaveName); // supportId,
} // totalMasters: finalResponse.length,
} // disconnectedIssues: finalResponse
// });
if (newSlaveHardwareIds.length > 0) { // } catch (error) {
issuesToAdd.push({ // console.error("Error fetching disconnected issues:", error);
type: "LoRa Disconnected", // return reply.code(500).send({ error: "Internal server error" });
masterHardwareId: connected_to, // }
hardwareIds: newSlaveHardwareIds, // };
slaveNames: newSlaveNames,
message: `Slaves LoRa disconnected under master ${connected_to}`
});
}
if (issuesToAdd.length > 0) { // exports.getDisconnectedIssuesBySupportId = async (req, reply) => {
const supportRecord = await Support.findOne({ supportId: "AWHYSU64" }); // try {
// const { supportId } = req.params;
if (supportRecord) { // if (!supportId) {
await Support.findOneAndUpdate( // return reply.code(400).send({ error: "supportId is required" });
{ _id: supportRecord._id }, // }
{
$push: {
issues: { $each: issuesToAdd }
},
updatedAt: new Date()
},
{ new: true }
);
} else {
console.error("Support record not found for supportId AWHYSU64");
}
}
return reply.send({ // const supportRecord = await Support.findOne({ supportId }).lean();
status_code: 200, // if (!supportRecord) {
message: "Checked connection and updated support if needed.", // return reply.code(404).send({ message: "No support record found for this supportId" });
masterDisconnected, // }
disconnectedSlaves
});
} catch (error) { // const allIssues = supportRecord.issues || [];
console.error("Error raising ticket (slave):", error); // const hardwareSet = new Set();
return reply.code(500).send({ error: "Internal server error" });
} // // Collect all hardware IDs and tankHardwareIds from issues
}; // for (const issue of allIssues) {
// if (issue.hardwareId) hardwareSet.add(issue.hardwareId); // GSM
// if (Array.isArray(issue.hardwareIds)) {
// issue.hardwareIds.forEach(id => hardwareSet.add(id)); // LoRa slaves
// }
// if (issue.masterHardwareId) hardwareSet.add(issue.masterHardwareId); // LoRa master
// }
// const hardwareIds = [...hardwareSet];
// const sensors = await Insensors.find({
// $or: [
// { hardwareId: { $in: hardwareIds } },
// { tankHardwareId: { $in: hardwareIds } }
// ]
// }).lean();
// const customerId = supportRecord.customerId;
// const orders = await Order.find({ customerId }).lean();
// const orderMap = {};
// for (const order of orders) {
// if (Array.isArray(order.master_connections)) {
// order.master_connections.forEach(conn => {
// if (conn.hardwareId) {
// orderMap[conn.hardwareId] = {
// masterName: conn.master_name || null,
// location: conn.location || null
// };
// }
// });
// }
// }
// // Map sensors by both hardwareId and tankHardwareId
// const sensorMap = {};
// for (const sensor of sensors) {
// if (sensor.hardwareId) sensorMap[sensor.hardwareId] = sensor;
// if (sensor.tankHardwareId) sensorMap[sensor.tankHardwareId] = sensor;
// }
// const masterMap = {};
// for (const issue of allIssues) {
// // GSM Disconnected
// if (issue.type === "GSM or LoRa Disconnected" && issue.hardwareId) {
// const sensor = sensorMap[issue.hardwareId];
// if (sensor && sensor.type === "master") {
// const enriched = orderMap[sensor.hardwareId] || {};
// masterMap[sensor.hardwareId] = {
// hardwareId: sensor.hardwareId,
// masterName: enriched.masterName || sensor.masterName || null,
// location: enriched.location || sensor.location || "",
// type: "master",
// connected_status: sensor.connected_status,
// gsm_last_check_time: sensor.gsm_last_check_time,
// gsm_last_disconnect_time: sensor.gsm_last_disconnect_time,
// connected_gsm_date: sensor.connected_gsm_date,
// connected_gsm_time: sensor.connected_gsm_time,
// connected_lora_date: sensor.connected_lora_date,
// connected_lora_time: sensor.connected_lora_time,
// support_gsm_last_check_time: sensor.support_gsm_last_check_time,
// connected_slave_count: 0,
// connected_slaves: []
// };
// }
// }
// // LoRa Disconnected
// if (issue.type === "GSM or LoRa Disconnected" && issue.masterHardwareId) {
// const masterSensor = sensorMap[issue.masterHardwareId];
// if (!masterSensor || masterSensor.type !== "master") continue;
// if (!masterMap[masterSensor.hardwareId]) {
// masterMap[masterSensor.hardwareId] = {
// hardwareId: masterSensor.hardwareId,
// masterName: masterSensor.masterName || null,
// location: masterSensor.location || "",
// type: "master",
// connected_status: masterSensor.connected_status,
// gsm_last_check_time: masterSensor.gsm_last_check_time,
// gsm_last_disconnect_time: masterSensor.gsm_last_disconnect_time,
// connected_gsm_date: masterSensor.connected_gsm_date,
// connected_gsm_time: masterSensor.connected_gsm_time,
// connected_lora_date: masterSensor.connected_lora_date,
// connected_lora_time: masterSensor.connected_lora_time,
// support_lora_last_check_time: masterSensor.support_lora_last_check_time,
// connected_slave_count: 0,
// connected_slaves: []
// };
// }
// const master = masterMap[masterSensor.hardwareId];
// let slaveIds = Array.isArray(issue.hardwareIds) ? issue.hardwareIds : [];
// console.log("slaveIds",slaveIds)
// let fallbackSlaves = [];
// if (slaveIds.length > 0) {
// // Try to fetch slaves by hardwareId or tankHardwareId
// fallbackSlaves = await Insensors.find({
// $or: [
// { hardwareId: { $in: slaveIds } },
// { tankhardwareId: { $in: slaveIds } }
// ],
// type: "slave"
// }).lean();
// } else {
// // Fallback: find by connected_to field
// fallbackSlaves = await Insensors.find({
// connected_to: issue.masterHardwareId,
// type: "slave"
// }).lean();
// }
// for (const slaveSensor of fallbackSlaves) {
// master.connected_slaves.push({
// hardwareId: slaveSensor.hardwareId,
// tankName: slaveSensor.tankName || "",
// location: slaveSensor.location || "",
// connected_status: slaveSensor.connected_status,
// connected_lora_time: slaveSensor.connected_lora_time,
// connected_lora_date: slaveSensor.connected_lora_date,
// lora_last_check_time: slaveSensor.lora_last_check_time,
// lora_last_disconnect_time: slaveSensor.lora_last_disconnect_time,
// connected_to: slaveSensor.connected_to,
// masterName: master.masterName,
// type: "slave",
// typeOfWater: slaveSensor.typeOfWater,
// tankHeight: slaveSensor.tankHeight,
// support_lora_last_check_time: slaveSensor.support_lora_last_check_time,
// });
// master.connected_slave_count++;
// }
// }
// }
// const finalResponse = Object.values(masterMap);
// return reply.send({
// status_code: 200,
// supportId,
// totalMasters: finalResponse.length,
// disconnectedIssues: finalResponse
// });
// } catch (error) {
// console.error("Error fetching disconnected issues:", error);
// return reply.code(500).send({ error: "Internal server error" });
// }
// };
exports.getDisconnectedIssuesBySupportId = async (req, reply) => { exports.getDisconnectedIssuesBySupportId = async (req, reply) => {
try { try {
@ -3203,7 +3463,7 @@ exports.getDisconnectedIssuesBySupportId = async (req, reply) => {
const allIssues = supportRecord.issues || []; const allIssues = supportRecord.issues || [];
const hardwareSet = new Set(); const hardwareSet = new Set();
// Collect all hardware IDs from issues // Collect all hardware IDs and tankHardwareIds from issues
for (const issue of allIssues) { for (const issue of allIssues) {
if (issue.hardwareId) hardwareSet.add(issue.hardwareId); // GSM if (issue.hardwareId) hardwareSet.add(issue.hardwareId); // GSM
if (Array.isArray(issue.hardwareIds)) { if (Array.isArray(issue.hardwareIds)) {
@ -3213,25 +3473,51 @@ exports.getDisconnectedIssuesBySupportId = async (req, reply) => {
} }
const hardwareIds = [...hardwareSet]; const hardwareIds = [...hardwareSet];
const sensors = await Insensors.find({ hardwareId: { $in: hardwareIds } }).lean();
// Map sensors by hardwareId const sensors = await Insensors.find({
$or: [
{ hardwareId: { $in: hardwareIds } },
{ tankHardwareId: { $in: hardwareIds } }
]
}).lean();
// Map sensors by both hardwareId and tankHardwareId
const sensorMap = {}; const sensorMap = {};
for (const sensor of sensors) { for (const sensor of sensors) {
sensorMap[sensor.hardwareId] = sensor; if (sensor.hardwareId) sensorMap[sensor.hardwareId] = sensor;
if (sensor.tankHardwareId) sensorMap[sensor.tankHardwareId] = sensor;
}
// Fetch Orders using customerId and build a map
const customerId = supportRecord.customerId;
const orders = await Order.find({ customerId }).lean();
const orderMap = {};
for (const order of orders) {
if (Array.isArray(order.master_connections)) {
order.master_connections.forEach(conn => {
if (conn.hardwareId) {
orderMap[conn.hardwareId] = {
masterName: conn.master_name || null,
location: conn.location || null
};
}
});
}
} }
const masterMap = {}; const masterMap = {};
for (const issue of allIssues) { for (const issue of allIssues) {
// GSM Disconnected // GSM Disconnected
if (issue.type === "GSM Disconnected" && issue.hardwareId) { if (issue.type === "GSM or LoRa Disconnected" && issue.hardwareId) {
const sensor = sensorMap[issue.hardwareId]; const sensor = sensorMap[issue.hardwareId];
if (sensor && sensor.type === "master") { if (sensor && sensor.type === "master") {
const enriched = orderMap[sensor.hardwareId] || {};
masterMap[sensor.hardwareId] = { masterMap[sensor.hardwareId] = {
hardwareId: sensor.hardwareId, hardwareId: sensor.hardwareId,
masterName: sensor.masterName || null, masterName: enriched.masterName || sensor.masterName || null,
location: sensor.location || "", location: enriched.location || sensor.location || "",
type: "master", type: "master",
connected_status: sensor.connected_status, connected_status: sensor.connected_status,
gsm_last_check_time: sensor.gsm_last_check_time, gsm_last_check_time: sensor.gsm_last_check_time,
@ -3248,15 +3534,16 @@ exports.getDisconnectedIssuesBySupportId = async (req, reply) => {
} }
// LoRa Disconnected // LoRa Disconnected
if (issue.type === "LoRa Disconnected" && issue.masterHardwareId) { if (issue.type === "GSM or LoRa Disconnected" && issue.masterHardwareId) {
const masterSensor = sensorMap[issue.masterHardwareId]; const masterSensor = sensorMap[issue.masterHardwareId];
if (!masterSensor || masterSensor.type !== "master") continue; if (!masterSensor || masterSensor.type !== "master") continue;
if (!masterMap[masterSensor.hardwareId]) { if (!masterMap[masterSensor.hardwareId]) {
const enriched = orderMap[masterSensor.hardwareId] || {};
masterMap[masterSensor.hardwareId] = { masterMap[masterSensor.hardwareId] = {
hardwareId: masterSensor.hardwareId, hardwareId: masterSensor.hardwareId,
masterName: masterSensor.masterName || null, masterName: enriched.masterName || masterSensor.masterName || null,
location: masterSensor.location || "", location: enriched.location || masterSensor.location || "",
type: "master", type: "master",
connected_status: masterSensor.connected_status, connected_status: masterSensor.connected_status,
gsm_last_check_time: masterSensor.gsm_last_check_time, gsm_last_check_time: masterSensor.gsm_last_check_time,
@ -3272,37 +3559,25 @@ exports.getDisconnectedIssuesBySupportId = async (req, reply) => {
} }
const master = masterMap[masterSensor.hardwareId]; const master = masterMap[masterSensor.hardwareId];
// First try from issue.hardwareIds
let slaveIds = Array.isArray(issue.hardwareIds) ? issue.hardwareIds : []; let slaveIds = Array.isArray(issue.hardwareIds) ? issue.hardwareIds : [];
let fallbackSlaves = [];
// If empty, fallback to slaves connected to this master if (slaveIds.length > 0) {
if (slaveIds.length === 0) { fallbackSlaves = await Insensors.find({
const fallbackSlaves = await Insensors.find({ connected_to: masterSensor.hardwareId, type: "slave" }).lean(); $or: [
for (const slaveSensor of fallbackSlaves) { { hardwareId: { $in: slaveIds } },
master.connected_slaves.push({ { tankhardwareId: { $in: slaveIds } }
hardwareId: slaveSensor.hardwareId, ],
tankName: slaveSensor.tankName || "", type: "slave"
location: slaveSensor.location || "", }).lean();
connected_status: slaveSensor.connected_status,
connected_lora_time: slaveSensor.connected_lora_time,
connected_lora_date: slaveSensor.connected_lora_date,
lora_last_check_time: slaveSensor.lora_last_check_time,
lora_last_disconnect_time: slaveSensor.lora_last_disconnect_time,
connected_to: slaveSensor.connected_to,
masterName: master.masterName,
type: "slave",
typeOfWater: slaveSensor.typeOfWater,
tankHeight: slaveSensor.tankHeight,
support_lora_last_check_time: slaveSensor.support_lora_last_check_time,
});
master.connected_slave_count++;
}
} else { } else {
// Populate slaves based on provided hardwareIds fallbackSlaves = await Insensors.find({
for (const slaveId of slaveIds) { connected_to: issue.masterHardwareId,
const slaveSensor = sensorMap[slaveId]; type: "slave"
if (slaveSensor && slaveSensor.type === "slave") { }).lean();
}
for (const slaveSensor of fallbackSlaves) {
master.connected_slaves.push({ master.connected_slaves.push({
hardwareId: slaveSensor.hardwareId, hardwareId: slaveSensor.hardwareId,
tankName: slaveSensor.tankName || "", tankName: slaveSensor.tankName || "",
@ -3323,8 +3598,6 @@ exports.getDisconnectedIssuesBySupportId = async (req, reply) => {
} }
} }
} }
}
}
const finalResponse = Object.values(masterMap); const finalResponse = Object.values(masterMap);

Loading…
Cancel
Save