|
|
@ -5159,6 +5159,15 @@ 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 latestMasterData = await IotData.findOne({ hardwareId: masterSensor.hardwareId }).sort({ date: -1 }).lean();
|
|
|
|
|
|
|
|
const now = moment.tz("Asia/Kolkata");
|
|
|
|
|
|
|
|
let gsmConnected = false;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (latestMasterData?.date) {
|
|
|
|
|
|
|
|
const gsmTime = moment.tz(latestMasterData.date, "Asia/Kolkata");
|
|
|
|
|
|
|
|
gsmConnected = now.diff(gsmTime, "minutes") <= 1;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
if (!masterMap[masterSensor.hardwareId]) {
|
|
|
|
if (!masterMap[masterSensor.hardwareId]) {
|
|
|
|
const enriched = orderMap[masterSensor.hardwareId] || {};
|
|
|
|
const enriched = orderMap[masterSensor.hardwareId] || {};
|
|
|
|
masterMap[masterSensor.hardwareId] = {
|
|
|
|
masterMap[masterSensor.hardwareId] = {
|
|
|
@ -5166,7 +5175,7 @@ exports.getDisconnectedIssuesBySupportId = async (req, reply) => {
|
|
|
|
masterName: enriched.masterName || masterSensor.masterName || "",
|
|
|
|
masterName: enriched.masterName || masterSensor.masterName || "",
|
|
|
|
location: enriched.location || masterSensor.location || "",
|
|
|
|
location: enriched.location || masterSensor.location || "",
|
|
|
|
type: "master",
|
|
|
|
type: "master",
|
|
|
|
connected_status: masterSensor.connected_status,
|
|
|
|
connected_status: gsmConnected ? "connected" : "disconnected",
|
|
|
|
gsm_last_check_time: masterSensor.gsm_last_check_time,
|
|
|
|
gsm_last_check_time: masterSensor.gsm_last_check_time,
|
|
|
|
gsm_last_disconnect_time: masterSensor.gsm_last_disconnect_time,
|
|
|
|
gsm_last_disconnect_time: masterSensor.gsm_last_disconnect_time,
|
|
|
|
connected_gsm_date: masterSensor.connected_gsm_date,
|
|
|
|
connected_gsm_date: masterSensor.connected_gsm_date,
|
|
|
@ -5186,7 +5195,8 @@ exports.getDisconnectedIssuesBySupportId = async (req, reply) => {
|
|
|
|
const connectedSlaves = await Insensors.find({
|
|
|
|
const connectedSlaves = await Insensors.find({
|
|
|
|
connected_to: masterSensor.hardwareId,
|
|
|
|
connected_to: masterSensor.hardwareId,
|
|
|
|
type: "slave",
|
|
|
|
type: "slave",
|
|
|
|
customerId }).lean();
|
|
|
|
customerId
|
|
|
|
|
|
|
|
}).lean();
|
|
|
|
|
|
|
|
|
|
|
|
const slaveSet = new Set(master.connected_slaves.map(s => s.hardwareId));
|
|
|
|
const slaveSet = new Set(master.connected_slaves.map(s => s.hardwareId));
|
|
|
|
|
|
|
|
|
|
|
@ -5203,11 +5213,19 @@ exports.getDisconnectedIssuesBySupportId = async (req, reply) => {
|
|
|
|
}).lean();
|
|
|
|
}).lean();
|
|
|
|
|
|
|
|
|
|
|
|
const slaveOrderInfo = slaveOrderMap[slaveHardwareId] || {};
|
|
|
|
const slaveOrderInfo = slaveOrderMap[slaveHardwareId] || {};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
const matchedTank = latestMasterData?.tanks?.find(t => t.tankhardwareId === slaveHardwareId);
|
|
|
|
|
|
|
|
let loraConnected = false;
|
|
|
|
|
|
|
|
if (matchedTank?.date && matchedTank.tankHeight !== "0") {
|
|
|
|
|
|
|
|
const loraTime = moment.tz(matchedTank.date, "Asia/Kolkata");
|
|
|
|
|
|
|
|
loraConnected = now.diff(loraTime, "minutes") <= 1;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
const slaveEnriched = {
|
|
|
|
const slaveEnriched = {
|
|
|
|
hardwareId: slaveHardwareId,
|
|
|
|
hardwareId: slaveHardwareId,
|
|
|
|
tankName: slave.tankName || (tankInfo?.tankName ?? ""),
|
|
|
|
tankName: slave.tankName || tankInfo?.tankName || "",
|
|
|
|
location: slave.location || tankInfo?.tankLocation || slaveOrderInfo.location || "",
|
|
|
|
location: slave.location || tankInfo?.tankLocation || slaveOrderInfo.location || "",
|
|
|
|
connected_status: slave.connected_status,
|
|
|
|
connected_status: loraConnected ? "connected" : "disconnected",
|
|
|
|
connected_lora_time: slave.connected_lora_time,
|
|
|
|
connected_lora_time: slave.connected_lora_time,
|
|
|
|
connected_lora_date: slave.connected_lora_date,
|
|
|
|
connected_lora_date: slave.connected_lora_date,
|
|
|
|
lora_last_check_time: slave.lora_last_check_time,
|
|
|
|
lora_last_check_time: slave.lora_last_check_time,
|
|
|
@ -5226,10 +5244,7 @@ exports.getDisconnectedIssuesBySupportId = async (req, reply) => {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// Map comments to only the text strings
|
|
|
|
|
|
|
|
const commentTexts = (supportRecord.comments || []).map(c => c.text);
|
|
|
|
const commentTexts = (supportRecord.comments || []).map(c => c.text);
|
|
|
|
|
|
|
|
|
|
|
|
// Add these comments to each master in disconnectedIssues
|
|
|
|
|
|
|
|
for (const master of Object.values(masterMap)) {
|
|
|
|
for (const master of Object.values(masterMap)) {
|
|
|
|
master.comments = commentTexts;
|
|
|
|
master.comments = commentTexts;
|
|
|
|
}
|
|
|
|
}
|
|
|
@ -5241,13 +5256,13 @@ exports.getDisconnectedIssuesBySupportId = async (req, reply) => {
|
|
|
|
totalMasters: Object.keys(masterMap).length,
|
|
|
|
totalMasters: Object.keys(masterMap).length,
|
|
|
|
disconnectedIssues: Object.values(masterMap)
|
|
|
|
disconnectedIssues: Object.values(masterMap)
|
|
|
|
});
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
} catch (error) {
|
|
|
|
} catch (error) {
|
|
|
|
console.error("Error fetching disconnected issues:", error);
|
|
|
|
console.error("Error fetching disconnected issues:", error);
|
|
|
|
return reply.code(500).send({ error: "Internal server error" });
|
|
|
|
return reply.code(500).send({ error: "Internal server error" });
|
|
|
|
}
|
|
|
|
}
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// exports.getRemoveConnectedMastersWithSlaves = async (req, reply) => {
|
|
|
|
// exports.getRemoveConnectedMastersWithSlaves = async (req, reply) => {
|
|
|
|
// try {
|
|
|
|
// try {
|
|
|
|
// const { supportId } = req.params;
|
|
|
|
// const { supportId } = req.params;
|
|
|
|