master^2
Bhaskar 5 months ago
parent a39e198cb9
commit 7bcc98fc1e

@ -3463,13 +3463,12 @@ 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 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);
if (Array.isArray(issue.hardwareIds)) { if (Array.isArray(issue.hardwareIds)) {
issue.hardwareIds.forEach(id => hardwareSet.add(id)); // LoRa slaves issue.hardwareIds.forEach(id => hardwareSet.add(id));
} }
if (issue.masterHardwareId) hardwareSet.add(issue.masterHardwareId); // LoRa master if (issue.masterHardwareId) hardwareSet.add(issue.masterHardwareId);
} }
const hardwareIds = [...hardwareSet]; const hardwareIds = [...hardwareSet];
@ -3477,20 +3476,21 @@ exports.getDisconnectedIssuesBySupportId = async (req, reply) => {
const sensors = await Insensors.find({ const sensors = await Insensors.find({
$or: [ $or: [
{ hardwareId: { $in: hardwareIds } }, { hardwareId: { $in: hardwareIds } },
{ tankHardwareId: { $in: hardwareIds } } { tankhardwareId: { $in: hardwareIds } }
] ]
}).lean(); }).lean();
// Map sensors by both hardwareId and tankHardwareId
const sensorMap = {}; const sensorMap = {};
for (const sensor of sensors) { for (const sensor of sensors) {
if (sensor.hardwareId) sensorMap[sensor.hardwareId] = sensor; if (sensor.hardwareId) sensorMap[sensor.hardwareId] = sensor;
if (sensor.tankHardwareId) sensorMap[sensor.tankHardwareId] = sensor; if (sensor.tankhardwareId) sensorMap[sensor.tankhardwareId] = sensor;
} }
// Fetch Orders using customerId and build a map const customerId = sensors.length > 0 ? sensors[0].customerId : null;
const customerId = supportRecord.customerId; console.log("customerId", customerId);
const orders = await Order.find({ customerId }).lean();
// ✅ Fetch orders only if customerId is present
const orders = customerId ? await Order.find({ customerId }).lean() : [];
console.log("orders", orders);
const orderMap = {}; const orderMap = {};
for (const order of orders) { for (const order of orders) {
@ -3509,15 +3509,14 @@ exports.getDisconnectedIssuesBySupportId = async (req, reply) => {
const masterMap = {}; const masterMap = {};
for (const issue of allIssues) { for (const issue of allIssues) {
// GSM Disconnected
if (issue.type === "GSM or LoRa 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] || {}; const enriched = orderMap[sensor.hardwareId] || {};
masterMap[sensor.hardwareId] = { masterMap[sensor.hardwareId] = {
hardwareId: sensor.hardwareId, hardwareId: sensor.hardwareId,
masterName: enriched.masterName || sensor.masterName || null, masterName: sensor.masterName || enriched.masterName || "",
location: enriched.location || sensor.location || "", location: sensor.location || enriched.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,
@ -3533,17 +3532,17 @@ exports.getDisconnectedIssuesBySupportId = async (req, reply) => {
} }
} }
// LoRa Disconnected
if (issue.type === "GSM or 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;
const enriched = orderMap[masterSensor.hardwareId] || {};
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: enriched.masterName || masterSensor.masterName || null, masterName: masterSensor.masterName || enriched.masterName || "",
location: enriched.location || masterSensor.location || "", location: masterSensor.location || enriched.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,
@ -3578,6 +3577,19 @@ exports.getDisconnectedIssuesBySupportId = async (req, reply) => {
} }
for (const slaveSensor of fallbackSlaves) { for (const slaveSensor of fallbackSlaves) {
let typeOfWater = "";
if (customerId && slaveSensor.tankhardwareId) {
const tankDetails = await Tank.findOne({
customerId,
tankhardwareId: slaveSensor.tankhardwareId
}).lean();
if (tankDetails?.typeOfWater) {
typeOfWater = tankDetails.typeOfWater;
}
}
master.connected_slaves.push({ master.connected_slaves.push({
hardwareId: slaveSensor.hardwareId, hardwareId: slaveSensor.hardwareId,
tankName: slaveSensor.tankName || "", tankName: slaveSensor.tankName || "",
@ -3590,9 +3602,9 @@ exports.getDisconnectedIssuesBySupportId = async (req, reply) => {
connected_to: slaveSensor.connected_to, connected_to: slaveSensor.connected_to,
masterName: master.masterName, masterName: master.masterName,
type: "slave", type: "slave",
typeOfWater: slaveSensor.typeOfWater, typeOfWater,
tankHeight: slaveSensor.tankHeight, tankHeight: slaveSensor.tankHeight,
support_lora_last_check_time: slaveSensor.support_lora_last_check_time, support_lora_last_check_time: slaveSensor.support_lora_last_check_time
}); });
master.connected_slave_count++; master.connected_slave_count++;
} }
@ -3615,6 +3627,7 @@ exports.getDisconnectedIssuesBySupportId = async (req, reply) => {
}; };
exports.getDisconnectedCustomerDetails = async (req, reply) => { exports.getDisconnectedCustomerDetails = async (req, reply) => {
try { try {
const { supportId } = req.params; const { supportId } = req.params;

Loading…
Cancel
Save