ashok 3 months ago
commit d36555d7fd

@ -1454,10 +1454,18 @@ exports.createMasterSlaveData = async (req, reply) => {
exports.masterConnectedSlaveList = async (req, reply) => { exports.masterConnectedSlaveList = async (req, reply) => {
try { try {
const { connectedTo } = req.params; const { connectedTo, customerId } = req.params;
// Step 1: Get master device details if (!connectedTo) {
const master = await Insensors.findOne({ hardwareId: connectedTo, type: 'master' }).lean(); return reply.status(400).send({ success: false, message: "connectedTo is required" });
}
if (!customerId) {
return reply.status(400).send({ success: false, message: "customerId is required" });
}
// Step 1: Get master device details (only for this customer)
const master = await Insensors.findOne({ hardwareId: connectedTo, type: 'master', customerId }).lean();
if (!master) { if (!master) {
return reply.status(404).send({ return reply.status(404).send({
success: false, success: false,
@ -1465,7 +1473,7 @@ exports.masterConnectedSlaveList = async (req, reply) => {
}); });
} }
// Step 2: Get tank metadata for master (including height, length, width) // Step 2: Get tank metadata for master
const tankDetails = await Tank.findOne( const tankDetails = await Tank.findOne(
{ hardwareId: connectedTo }, { hardwareId: connectedTo },
{ {
@ -1479,14 +1487,14 @@ exports.masterConnectedSlaveList = async (req, reply) => {
const masterTypeOfWater = tankDetails?.typeOfWater || null; const masterTypeOfWater = tankDetails?.typeOfWater || null;
// Step 3: Get slave tanks connected to master // Step 3: Get slave tanks connected to master and belonging to this customer
const slaveTanks = await Insensors.find({ connected_to: connectedTo, type: 'slave' }).lean(); const slaveTanks = await Insensors.find({ connected_to: connectedTo, type: 'slave', customerId }).lean();
const slaveCount = slaveTanks.length; const slaveCount = slaveTanks.length;
// Step 4: Get latest IotData for master // Step 4: Get latest IotData for master
const latestIotData = await IotData.findOne({ hardwareId: connectedTo }).sort({ date: -1 }).lean(); const latestIotData = await IotData.findOne({ hardwareId: connectedTo }).sort({ date: -1 }).lean();
// Step 5: Fetch order to get masterName, location, googleLocation, coordinates + summary counts // Step 5: Fetch order to get masterName, location, etc.
const order = await Order.findOne({ "master_connections.hardwareId": connectedTo }).lean(); const order = await Order.findOne({ "master_connections.hardwareId": connectedTo }).lean();
let masterOrderInfo = {}; let masterOrderInfo = {};
@ -1515,7 +1523,7 @@ exports.masterConnectedSlaveList = async (req, reply) => {
electricals = order.electricals || []; electricals = order.electricals || [];
} }
// Step 6: Prepare master object for response // Step 6: Build master response object
const masterResponse = { const masterResponse = {
...master, ...master,
isMaster: true, isMaster: true,
@ -1543,7 +1551,7 @@ exports.masterConnectedSlaveList = async (req, reply) => {
t.tankhardwareId === finalHardwareId || t.hardwareId === finalHardwareId t.tankhardwareId === finalHardwareId || t.hardwareId === finalHardwareId
); );
// Optionally fetch tank meta for slave too (if needed) // Fetch slave's tank metadata
const slaveTankMeta = await Tank.findOne( const slaveTankMeta = await Tank.findOne(
{ hardwareId: slave.hardwareId }, { hardwareId: slave.hardwareId },
{ height: 1, length: 1, width: 1 } { height: 1, length: 1, width: 1 }
@ -1561,7 +1569,7 @@ exports.masterConnectedSlaveList = async (req, reply) => {
}; };
})); }));
// Step 8: Combine master and slaves into one array // Step 8: Combine into one array
const combinedData = [masterResponse, ...processedSlaves]; const combinedData = [masterResponse, ...processedSlaves];
return reply.send({ return reply.send({

@ -405,7 +405,7 @@ module.exports = function (fastify, opts, next) {
handler: installationController.createMasterSlaveData handler: installationController.createMasterSlaveData
}); });
fastify.get("/api/getmasterConnectedSlaveData/:connectedTo", { fastify.get("/api/getmasterConnectedSlaveData/:connectedTo/:customerId", {
schema: { schema: {
description: "Get masrter connected slave data", description: "Get masrter connected slave data",
tags: ["Installation"], tags: ["Installation"],
@ -414,7 +414,7 @@ module.exports = function (fastify, opts, next) {
type: "object", type: "object",
properties: { properties: {
connectedTo: { type: "string" }, connectedTo: { type: "string" },
customerId: { type: "string" },
}, },
required: [ "connectedTo"], required: [ "connectedTo"],
}, },

Loading…
Cancel
Save