ashok 3 months ago
commit c742e047dc

@ -1244,6 +1244,8 @@ exports.masterConnectedSlaveList = async (req, reply) => {
// Step 2: Get tank metadata for master // Step 2: Get tank metadata for master
const tankDetails = await Tank.findOne({ hardwareId: connectedTo }, { tankLocation: 1, typeOfWater: 1 }).lean(); const tankDetails = await Tank.findOne({ hardwareId: connectedTo }, { tankLocation: 1, typeOfWater: 1 }).lean();
const masterTypeOfWater = tankDetails?.typeOfWater || null;
// Step 3: Get slave tanks connected to master // Step 3: Get slave tanks connected to master
const slaveTanks = await Insensors.find({ connected_to: connectedTo, type: 'slave' }).lean(); const slaveTanks = await Insensors.find({ connected_to: connectedTo, type: 'slave' }).lean();
const slaveCount = slaveTanks.length; const slaveCount = slaveTanks.length;
@ -1251,31 +1253,58 @@ exports.masterConnectedSlaveList = async (req, reply) => {
// 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: Prepare master object for response // Step 5: Fetch order to get masterName and location
const order = await Order.findOne({ "master_connections.hardwareId": connectedTo }).lean();
let masterOrderInfo = {};
if (order) {
const match = order.master_connections.find(mc => mc.hardwareId === connectedTo);
if (match) {
masterOrderInfo = {
masterName: match.master_name || "",
location: match.location || ""
};
}
}
// Step 6: Prepare master object for response
const masterResponse = { const masterResponse = {
...master, ...master,
isMaster: true, isMaster: true,
tankLocation: tankDetails?.tankLocation || null, tankLocation: tankDetails?.tankLocation || null,
typeOfWater: tankDetails?.typeOfWater || null, typeOfWater: masterTypeOfWater,
tankHeight: null // Master doesn't have individual tankHeight tankHeight: null,
masterName: masterOrderInfo.masterName,
location: masterOrderInfo.location
}; };
// Step 6: Process each slave // Step 7: Process each slave
const processedSlaves = slaveTanks.map(slave => { const processedSlaves = slaveTanks.map(slave => {
const matchingTankData = latestIotData?.tanks?.find(t => t.tankhardwareId === slave.hardwareId); const originalHardwareId = slave.hardwareId;
const tankHardwareId = slave.tankhardwareId;
// Determine final hardwareId: prefer tankhardwareId if exists
const finalHardwareId = tankHardwareId || originalHardwareId;
const matchingTankData = latestIotData?.tanks?.find(t =>
t.tankhardwareId === finalHardwareId || t.hardwareId === finalHardwareId
);
return { return {
...slave, ...slave,
isMaster: false, isMaster: false,
tankHeight: matchingTankData?.tankHeight ?? null hardwareId: finalHardwareId, // Replace hardwareId with tankhardwareId if present
tankHeight: matchingTankData?.tankHeight ?? null,
typeOfWater: masterTypeOfWater === 'bore' ? 'bore' : (slave.typeOfWater || null)
}; };
}); });
// Step 7: Combine master and slaves into one array // Step 8: Combine master and slaves into one array
const combinedData = [masterResponse, ...processedSlaves]; const combinedData = [masterResponse, ...processedSlaves];
return reply.send({ return reply.send({
success: true, success: true,
tankLocation: tankDetails?.tankLocation || null,
typeOfWater: masterTypeOfWater,
connectedSlaveCount: slaveCount, connectedSlaveCount: slaveCount,
data: combinedData data: combinedData
}); });
@ -1290,6 +1319,8 @@ exports.masterConnectedSlaveList = async (req, reply) => {
}; };
// exports.masterConnectedSlaveList = async (req, reply) => { // exports.masterConnectedSlaveList = async (req, reply) => {
// try { // try {
// const { connectedTo } = req.params; // const { connectedTo } = req.params;

Loading…
Cancel
Save