From 82b33645204d071b7d501723700ab8dd3a0f09c4 Mon Sep 17 00:00:00 2001 From: Bhaskar Date: Tue, 15 Apr 2025 11:05:11 +0530 Subject: [PATCH] Changes --- src/controllers/installationController.js | 43 ++++++++++++----------- 1 file changed, 22 insertions(+), 21 deletions(-) diff --git a/src/controllers/installationController.js b/src/controllers/installationController.js index 25607b49..e490a192 100644 --- a/src/controllers/installationController.js +++ b/src/controllers/installationController.js @@ -1000,14 +1000,12 @@ exports.getMasterSlaveSummary = async (req, reply) => { return reply.status(400).send({ message: "Missing customerId" }); } - // Get all devices for customer const allDevices = await Insensors.find({ customerId }); - // Separate masters and slaves const masters = allDevices.filter(device => device.type === 'master'); const slaves = allDevices.filter(device => device.type === 'slave'); - // Update connected_status for each sensor + // Update connection status and timestamps const updateStatusPromises = allDevices.map(async device => { const hwId = device.connected_to; if (!hwId) return; @@ -1017,11 +1015,13 @@ exports.getMasterSlaveSummary = async (req, reply) => { .lean(); let status = "disconnected"; + let updateFields = {}; if (latestData?.date) { const now = moment(); const lastSeen = moment(latestData.date); const diff = now.diff(lastSeen, 'minutes'); + if (diff <= 10) { status = "connected"; @@ -1030,46 +1030,47 @@ exports.getMasterSlaveSummary = async (req, reply) => { const time = dateObj.toTimeString().split(" ")[0]; if (device.type === 'master') { + updateFields.connected_gsm_date = date; + updateFields.connected_gsm_time = time; device.connected_gsm_date = date; device.connected_gsm_time = time; } if (device.type === 'slave') { + updateFields.connected_lora_date = date; + updateFields.connected_lora_time = time; device.connected_lora_date = date; device.connected_lora_time = time; } } } - await Insensors.updateOne( - { _id: device._id }, - { $set: { connected_status: status } } - ); - + updateFields.connected_status = status; + await Insensors.updateOne({ _id: device._id }, { $set: updateFields }); device.connected_status = status; }); await Promise.all(updateStatusPromises); - // Map masters to their connected slaves + // Build enriched masters and exclude irrelevant fields const enrichedMasters = masters.map(master => { - const masterConnectionId = master.connected_to; + const masterObj = master.toObject(); - // Remove lora fields for master - const masterObj = { - ...master.toObject(), - connected_lora_date: undefined, - connected_lora_time: undefined - }; + // Remove LoRa fields from master response + delete masterObj.connected_lora_date; + delete masterObj.connected_lora_time; + + const masterConnectionId = master.connected_to; const connectedSlaves = slaves .filter(slave => slave.connected_to === masterConnectionId) .map(slave => { - const slaveObj = { - ...slave.toObject(), - connected_gsm_date: undefined, - connected_gsm_time: undefined - }; + const slaveObj = slave.toObject(); + + // Remove GSM fields from slave response + delete slaveObj.connected_gsm_date; + delete slaveObj.connected_gsm_time; + return slaveObj; });