changes on masterConnectedSlaveList

master^2
Bhaskar 4 months ago
parent 39b862d3c7
commit 9e416b8e1a

@ -1228,6 +1228,68 @@ exports.createMasterSlaveData = async (req, reply) => {
}
};
exports.masterConnectedSlaveList = async (req, reply) => {
try {
const { connectedTo } = req.params;
// Step 1: Get master device details
const master = await Insensors.findOne({ hardwareId: connectedTo, type: 'master' }).lean();
if (!master) {
return reply.status(404).send({
success: false,
message: "Master device not found"
});
}
// Step 2: Get tank metadata for master
const tankDetails = await Tank.findOne({ hardwareId: connectedTo }, { tankLocation: 1, typeOfWater: 1 }).lean();
// Step 3: Get slave tanks connected to master
const slaveTanks = await Insensors.find({ connected_to: connectedTo, type: 'slave' }).lean();
const slaveCount = slaveTanks.length;
// Step 4: Get latest IotData for master
const latestIotData = await IotData.findOne({ hardwareId: connectedTo }).sort({ date: -1 }).lean();
// Step 5: Prepare master object for response
const masterResponse = {
...master,
isMaster: true,
tankLocation: tankDetails?.tankLocation || null,
typeOfWater: tankDetails?.typeOfWater || null,
tankHeight: null // Master doesn't have individual tankHeight
};
// Step 6: Process each slave
const processedSlaves = slaveTanks.map(slave => {
const matchingTankData = latestIotData?.tanks?.find(t => t.tankhardwareId === slave.hardwareId);
return {
...slave,
isMaster: false,
tankHeight: matchingTankData?.tankHeight ?? null
};
});
// Step 7: Combine master and slaves into one array
const combinedData = [masterResponse, ...processedSlaves];
return reply.send({
success: true,
connectedSlaveCount: slaveCount,
data: combinedData
});
} catch (error) {
console.error("Error fetching master connected slave data:", error);
return reply.status(500).send({
success: false,
message: "Internal Server Error"
});
}
};
// exports.masterConnectedSlaveList = async (req, reply) => {
// try {
// const { connectedTo } = req.params;
@ -1303,60 +1365,60 @@ exports.createMasterSlaveData = async (req, reply) => {
exports.masterConnectedSlaveList = async (req, reply) => {
try {
const { connectedTo } = req.params;
// exports.masterConnectedSlaveList = async (req, reply) => {
// try {
// const { connectedTo } = req.params;
// Step 1: Get master details
const master = await Insensors.findOne({ hardwareId: connectedTo, type: 'master' }).lean();
if (!master) {
return reply.status(404).send({
success: false,
message: "Master device not found"
});
}
// // Step 1: Get master details
// const master = await Insensors.findOne({ hardwareId: connectedTo, type: 'master' }).lean();
// if (!master) {
// return reply.status(404).send({
// success: false,
// message: "Master device not found"
// });
// }
// Step 2: Get slave tanks connected to master
const slaveTanks = await Insensors.find({ connected_to: connectedTo, type: 'slave' }).lean();
const slaveCount = slaveTanks.length;
// // Step 2: Get slave tanks connected to master
// const slaveTanks = await Insensors.find({ connected_to: connectedTo, type: 'slave' }).lean();
// const slaveCount = slaveTanks.length;
// Step 3: Get Tank metadata for master
const tankDetails = await Tank.findOne({ hardwareId: connectedTo }, { tankLocation: 1, typeOfWater: 1 }).lean();
// // Step 3: Get Tank metadata for master
// const tankDetails = await Tank.findOne({ hardwareId: connectedTo }, { tankLocation: 1, typeOfWater: 1 }).lean();
// Step 4: Get latest IotData for master
const latestIotData = await IotData.findOne({ hardwareId: connectedTo }).sort({ date: -1 }).lean();
// // Step 4: Get latest IotData for master
// const latestIotData = await IotData.findOne({ hardwareId: connectedTo }).sort({ date: -1 }).lean();
// Step 5: Process slaves
const processedSlaves = slaveTanks.map(slave => {
const matchingTankData = latestIotData?.tanks?.find(tank => tank.tankhardwareId === slave.hardwareId);
return {
...slave,
tankHeight: matchingTankData?.tankHeight ?? null
};
});
// // Step 5: Process slaves
// const processedSlaves = slaveTanks.map(slave => {
// const matchingTankData = latestIotData?.tanks?.find(tank => tank.tankhardwareId === slave.hardwareId);
// return {
// ...slave,
// tankHeight: matchingTankData?.tankHeight ?? null
// };
// });
// Step 6: Prepare full master object
const masterResponse = {
...master,
tankLocation: tankDetails?.tankLocation || null,
typeOfWater: tankDetails?.typeOfWater || null
};
// // Step 6: Prepare full master object
// const masterResponse = {
// ...master,
// tankLocation: tankDetails?.tankLocation || null,
// typeOfWater: tankDetails?.typeOfWater || null
// };
return reply.send({
success: true,
master: masterResponse,
connectedSlaveCount: slaveCount,
slaves: processedSlaves
});
// return reply.send({
// success: true,
// master: masterResponse,
// connectedSlaveCount: slaveCount,
// slaves: processedSlaves
// });
} catch (error) {
console.error("Error fetching master connected slave data:", error);
return reply.status(500).send({
success: false,
message: "Internal Server Error"
});
}
};
// } catch (error) {
// console.error("Error fetching master connected slave data:", error);
// return reply.status(500).send({
// success: false,
// message: "Internal Server Error"
// });
// }
// };

Loading…
Cancel
Save