diff --git a/src/controllers/installationController.js b/src/controllers/installationController.js index 287c211c..e7bea7b2 100644 --- a/src/controllers/installationController.js +++ b/src/controllers/installationController.js @@ -1541,33 +1541,126 @@ exports.masterConnectedSlaveList = async (req, reply) => { }; // Step 7: Process each slave + // const processedSlaves = await Promise.all(slaveTanks.map(async slave => { + // const originalHardwareId = slave.connected_to; + // const tankHardwareId = slave.tankhardwareId; + // console.log("originalHardwareId",originalHardwareId) + // console.log("tankHardwareId",tankHardwareId) + + // const finalHardwareId = tankHardwareId || originalHardwareId; + + // const matchingTankData = latestIotData?.tanks?.find(t => + // t.tankhardwareId === finalHardwareId || t.hardwareId === finalHardwareId + // ); + + // // Fetch slave's tank metadata + // const slaveTankMeta = await Tank.findOne( + // // { hardwareId: slave.connected_to }, + // { + // $or: [ + // { hardwareId: slave.connected_to }, + // { hardwareId: slave.tankhardwareId } // assuming tankhardwareId is saved as hardwareId in Tank collection + // ] + // }, + // { height: 1, length: 1, width: 1 } + // ).lean(); + // console.log("slaveTankMeta",slaveTankMeta) + // return { + // ...slave, + // isMaster: false, + // hardwareId: finalHardwareId, + // tankHeight: matchingTankData?.tankHeight ?? null, + // typeOfWater: masterTypeOfWater === 'bore' ? 'bore' : (slave.typeOfWater || null), + // height: slaveTankMeta?.height || null, + // length: slaveTankMeta?.length || null, + // width: slaveTankMeta?.width || null + // }; + // })); + const processedSlaves = await Promise.all(slaveTanks.map(async slave => { - const originalHardwareId = slave.hardwareId; - const tankHardwareId = slave.tankhardwareId; + // const finalHardwareId = slave.tankhardwareId || slave.connected_to; + // console.log("finalHardwareId",finalHardwareId) + // // Find matching tank meta by hardwareId in Tank collection + // const slaveTankMeta = await Tank.findOne( + // { hardwareId: finalHardwareId }, + // { height: 1, length: 1, width: 1 } + // ).lean(); +// const finalHardwareId = slave.tankhardwareId || slave.connected_to; + +// // Try match by tankhardwareId first +// let slaveTankMeta = await Tank.findOne( +// { tankhardwareId: slave.tankhardwareId }, +// { height: 1, length: 1, width: 1 } +// ).lean(); + +// // If not found, fallback to match by hardwareId +// if (!slaveTankMeta && slave.connected_to) { +// slaveTankMeta = await Tank.findOne( +// { hardwareId: slave.connected_to }, +// { height: 1, length: 1, width: 1 } +// ).lean(); +// } - const finalHardwareId = tankHardwareId || originalHardwareId; +// console.log("slaveTankMeta",slaveTankMeta) - const matchingTankData = latestIotData?.tanks?.find(t => - t.tankhardwareId === finalHardwareId || t.hardwareId === finalHardwareId - ); +// // Find matching IoT tank data (for tankHeight) +// const matchingTankData = latestIotData?.tanks?.find(t => +// t.tankhardwareId === finalHardwareId || t.connected_to === finalHardwareId +// ); +// console.log("matchingTankData",matchingTankData) + +// return { +// ...slave, +// isMaster: false, +// hardwareId: finalHardwareId, +// tankHeight: matchingTankData?.tankHeight ?? null, +// typeOfWater: masterTypeOfWater === 'bore' ? 'bore' : (slave.typeOfWater || null), +// height: slaveTankMeta?.height || null, +// length: slaveTankMeta?.length || null, +// width: slaveTankMeta?.width || null +// }; +const finalHardwareId = slave.tankhardwareId || slave.connected_to; - // Fetch slave's tank metadata - const slaveTankMeta = await Tank.findOne( - { hardwareId: slave.hardwareId }, - { height: 1, length: 1, width: 1 } - ).lean(); +// Try match by tankhardwareId first, filtered by customerId +let slaveTankMeta = await Tank.findOne( + { + tankhardwareId: slave.tankhardwareId, + customerId: customerId + }, + { height: 1, length: 1, width: 1 } +).lean(); + +// If not found, fallback to match by hardwareId + customerId +if (!slaveTankMeta && slave.connected_to) { + slaveTankMeta = await Tank.findOne( + { + hardwareId: slave.connected_to, + customerId: customerId + }, + { height: 1, length: 1, width: 1 } + ).lean(); +} + +console.log("slaveTankMeta", slaveTankMeta); + +// Find matching IoT tank data (for tankHeight) +const matchingTankData = latestIotData?.tanks?.find(t => + t.tankhardwareId === finalHardwareId || t.connected_to === finalHardwareId +); + +return { + ...slave, + isMaster: false, + hardwareId: finalHardwareId, + tankHeight: matchingTankData?.tankHeight ?? null, + typeOfWater: masterTypeOfWater === 'bore' ? 'bore' : (slave.typeOfWater || null), + height: slaveTankMeta?.height || null, + length: slaveTankMeta?.length || null, + width: slaveTankMeta?.width || null +}; + +})); - return { - ...slave, - isMaster: false, - hardwareId: finalHardwareId, - tankHeight: matchingTankData?.tankHeight ?? null, - typeOfWater: masterTypeOfWater === 'bore' ? 'bore' : (slave.typeOfWater || null), - height: slaveTankMeta?.height || null, - length: slaveTankMeta?.length || null, - width: slaveTankMeta?.width || null - }; - })); // Step 8: Combine into one array const combinedData = [masterResponse, ...processedSlaves];