ashok 6 months ago
commit c957aafd13

@ -869,46 +869,83 @@ exports.createMasterSlaveData = async (req, reply) => {
reply.status(500).send({ message: err.message }); reply.status(500).send({ message: err.message });
} }
}; };
exports.masterConnectedSlaveList = async (req, reply) => { exports.masterConnectedSlaveList = async (req, reply) => {
try { try {
const { connectedTo } = req.params; const { connectedTo } = req.params;
// Step 1: Find all slave tanks where connected_to matches // Step 1: Find all slave tanks where connected_to matches
const slaveTanks = await Insensors.find({ connected_to: connectedTo }); const slaveTanks = await Insensors.find({ connected_to: connectedTo }).lean();
console.log(slaveTanks,"slaveTanks") console.log(slaveTanks, "slaveTanks");
if (!slaveTanks || slaveTanks.length === 0) { if (!slaveTanks || slaveTanks.length === 0) {
return reply.status(404).send({ success: false, message: "No tanks found for the given connected_to value" }); return reply.status(404).send({
success: false,
message: "No tanks found for the given connected_to value"
});
} }
// Step 2: Fetch `tankLocation` and `typeOfWater` from the Tank schema // Step 2: Fetch `tankLocation` and `typeOfWater` from the Tank schema (for master device display)
const tankDetails = await Tank.findOne({ hardwareId: connectedTo }, { tankLocation: 1, typeOfWater: 1 }); const tankDetails = await Tank.findOne(
{ hardwareId: connectedTo },
{ tankLocation: 1, typeOfWater: 1 }
);
if (!tankDetails) { if (!tankDetails) {
return reply.status(404).send({ success: false, message: "Tank details not found for the given connectedTo" }); return reply.status(404).send({
success: false,
message: "Tank details not found for the given connectedTo"
});
} }
// Step 3: Count the number of connected slaves // Step 3: Count the number of connected slaves
const slaveCount = slaveTanks.length; const slaveCount = slaveTanks.length;
// Step 4: Fetch latest IotData for the master to extract tankHeight for each slave
const latestIotData = await IotData.findOne({ hardwareId: connectedTo }).sort({ date: -1 }).lean();
// Step 5: Prepare processed response for each tank
const processedSlaves = slaveTanks.map(slave => {
if (slave.type === 'slave') {
// Find matching tank data for this slave in IotData
const matchingTankData = latestIotData?.tanks?.find(tank => tank.tankhardwareId === slave.hardwareId);
return {
...slave,
tankHeight: matchingTankData?.tankHeight ?? null // Add tankHeight if found
};
} else {
// Remove unnecessary fields for master type
const {
tankName,
tankLocation,
typeOfWater,
...rest
} = slave;
return rest;
}
});
return reply.send({ return reply.send({
success: true, success: true,
tankLocation: tankDetails.tankLocation, tankLocation: tankDetails.tankLocation,
typeOfWater: tankDetails.typeOfWater, typeOfWater: tankDetails.typeOfWater,
connectedSlaveCount: slaveCount, connectedSlaveCount: slaveCount,
data: slaveTanks, data: processedSlaves
}); });
} catch (error) { } catch (error) {
console.error("Error fetching master connected slave data:", error); console.error("Error fetching master connected slave data:", error);
return reply.status(500).send({ success: false, message: "Internal Server Error" }); return reply.status(500).send({
success: false,
message: "Internal Server Error"
});
} }
}; };
exports.mastrerList = async (req, reply) => { exports.mastrerList = async (req, reply) => {
try { try {
const { customerId, installationId } = req.params; const { customerId, installationId } = req.params;

Loading…
Cancel
Save