From 889aae396518cc1c4bea5af2c8d3e44a58138a71 Mon Sep 17 00:00:00 2001 From: Bhaskar Date: Wed, 4 Jun 2025 12:41:27 +0530 Subject: [PATCH] changes --- src/controllers/installationController.js | 40 ++++++++++++++++------- 1 file changed, 28 insertions(+), 12 deletions(-) diff --git a/src/controllers/installationController.js b/src/controllers/installationController.js index 2fb0c226..15906c35 100644 --- a/src/controllers/installationController.js +++ b/src/controllers/installationController.js @@ -4034,7 +4034,7 @@ cron.schedule("* * * * *", async () => { // OR there are disconnected slaves and none of them are active const shouldRaiseTicket = (masterIsDisconnected && !masterAlreadyActive) || - ( !anySlaveAlreadyActive); + (disconnectedSlaves.length > 0 && !anySlaveAlreadyActive); if (shouldRaiseTicket) { console.log(`⚠️ Raising ticket for master: ${hardwareId}`); @@ -5532,6 +5532,8 @@ exports.getRemoveConnectedMastersWithSlaves = async (req, reply) => { } }; +// const moment = require("moment-timezone"); + exports.getDisconnectedCustomerDetails = async (req, reply) => { try { const { supportId } = req.params; @@ -5565,7 +5567,7 @@ exports.getDisconnectedCustomerDetails = async (req, reply) => { } const hardwareIdsArray = Array.from(allHardwareIds); - console.log("hardwareIdsArray",hardwareIdsArray) + // 4. Find disconnected insensors using connected_to match const disconnectedSensors = await Insensors.find({ connected_to: { $in: hardwareIdsArray }, @@ -5576,14 +5578,33 @@ exports.getDisconnectedCustomerDetails = async (req, reply) => { return reply.code(404).send({ message: "No disconnected issues found" }); } - // 5. Get unique customerIds from disconnected sensors - const customerIds = [...new Set(disconnectedSensors.map(s => s.customerId))]; + // 4.5 Exclude customers who have any sensor with support_issue_status = "active" + const disconnectedCustomerIds = [...new Set(disconnectedSensors.map(s => s.customerId))]; + + const activeSensors = await Insensors.find({ + customerId: { $in: disconnectedCustomerIds }, + support_issue_status: "inactive" + }).lean(); + + const activeCustomerIds = new Set(activeSensors.map(s => s.customerId)); + + // Filter disconnectedSensors to exclude customers with active sensors + const filteredDisconnectedSensors = disconnectedSensors.filter( + s => !activeCustomerIds.has(s.customerId) + ); + + if (filteredDisconnectedSensors.length === 0) { + return reply.code(404).send({ message: "No disconnected issues found after filtering active sensors" }); + } + + // 5. Get unique customerIds from filtered disconnected sensors + const customerIds = [...new Set(filteredDisconnectedSensors.map(s => s.customerId))]; const customers = await User.find({ customerId: { $in: customerIds } }).lean(); // 6. For each customer, calculate total unique hardwareIds involved in their disconnected sensors const customerHardwareMap = {}; - for (const sensor of disconnectedSensors) { + for (const sensor of filteredDisconnectedSensors) { const custId = sensor.customerId; if (!customerHardwareMap[custId]) { customerHardwareMap[custId] = new Set(); @@ -5604,12 +5625,9 @@ exports.getDisconnectedCustomerDetails = async (req, reply) => { ) { customerHardwareMap[custId].add(issue.hardwareId); } - console.log("allIssueHardwareIds",allIssueHardwareIds) - } } - // 7. Build final response const response = []; @@ -5622,12 +5640,9 @@ exports.getDisconnectedCustomerDetails = async (req, reply) => { const issueHw = issue.hardwareId?.trim().toLowerCase(); const hardwareIds = issue.hardwareIds?.map(id => id?.trim().toLowerCase()) || []; const allIds = [issueHw, ...hardwareIds]; - console.log("allIds",allIds) - console.log("Array.from(hardwareIdSet).some(hw => allIds.includes(hw?.trim().toLowerCase()))",Array.from(hardwareIdSet).some(hw => allIds.includes(hw?.trim().toLowerCase()))) return Array.from(hardwareIdSet).some(hw => allIds.includes(hw?.trim().toLowerCase())); - }); - //console.log("relatedIssues",relatedIssues) + let latestIssueTime = null; for (const issue of relatedIssues) { if (issue.lastTicketRaisedAt) { @@ -5691,6 +5706,7 @@ exports.getDisconnectedCustomerDetails = async (req, reply) => { + // exports.getDisconnectedCustomerDetails = async (req, reply) => { // try { // const { supportId } = req.params;