|
|
|
@ -208,68 +208,37 @@ exports.getConnectionsInfoOfParticularTank = async (req, reply) => {
|
|
|
|
|
//get tanks data by passing username
|
|
|
|
|
exports.getTank = async (req, reply) => {
|
|
|
|
|
try {
|
|
|
|
|
const { customerId } = req.params;
|
|
|
|
|
|
|
|
|
|
// Aggregate to count need_sensor values
|
|
|
|
|
const needSensorCounts = await Tank.aggregate([
|
|
|
|
|
{ $match: { customerId } },
|
|
|
|
|
{
|
|
|
|
|
$group: {
|
|
|
|
|
_id: "$need_sensor",
|
|
|
|
|
count: { $sum: 1 },
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
]);
|
|
|
|
|
|
|
|
|
|
const inputIsMotorCounts = await Tank.aggregate([
|
|
|
|
|
{ $match: { customerId } },
|
|
|
|
|
{ $unwind: "$connections.inputConnections" },
|
|
|
|
|
{
|
|
|
|
|
$group: {
|
|
|
|
|
_id: "$connections.inputConnections.inputismotor",
|
|
|
|
|
count: { $sum: 1 },
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
]);
|
|
|
|
|
|
|
|
|
|
// Retrieve all tank documents for the customerId
|
|
|
|
|
const tanks = await Tank.find({ customerId }).exec();
|
|
|
|
|
|
|
|
|
|
// Format the aggregation results
|
|
|
|
|
const needSensorResult = needSensorCounts.reduce((acc, item) => {
|
|
|
|
|
if (item._id === "yes") {
|
|
|
|
|
acc["yes"] = item.count;
|
|
|
|
|
}
|
|
|
|
|
return acc;
|
|
|
|
|
}, {});
|
|
|
|
|
|
|
|
|
|
const inputIsMotorResult = inputIsMotorCounts.reduce((acc, item) => {
|
|
|
|
|
if (item._id === true) {
|
|
|
|
|
acc["true"] = item.count;
|
|
|
|
|
}
|
|
|
|
|
return acc;
|
|
|
|
|
}, {});
|
|
|
|
|
await Tank.find({ customerId: req.query.customerId })
|
|
|
|
|
.exec()
|
|
|
|
|
.then((docs) => {
|
|
|
|
|
// Transform the response to include switch_count
|
|
|
|
|
const transformedDocs = docs.map((tank) => {
|
|
|
|
|
const inputConnections = tank.connections?.inputConnections || [];
|
|
|
|
|
const switchCount = inputConnections.reduce((count, connection) => {
|
|
|
|
|
return count + (connection.inputismotor === true ? 1 : 0);
|
|
|
|
|
}, 0);
|
|
|
|
|
|
|
|
|
|
// Add the switch_count field inside connections
|
|
|
|
|
return {
|
|
|
|
|
...tank.toObject(), // Convert Mongoose document to plain object
|
|
|
|
|
connections: {
|
|
|
|
|
...tank.connections,
|
|
|
|
|
switch_count: switchCount,
|
|
|
|
|
},
|
|
|
|
|
};
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
// Return the combined response
|
|
|
|
|
reply.send({
|
|
|
|
|
status_code: 200,
|
|
|
|
|
customerId,
|
|
|
|
|
needSensor: {
|
|
|
|
|
yes: needSensorResult["YES"] || 0,
|
|
|
|
|
},
|
|
|
|
|
inputIsMotor: {
|
|
|
|
|
true: inputIsMotorResult["true"] || 0,
|
|
|
|
|
},
|
|
|
|
|
tanks: {
|
|
|
|
|
data: tanks,
|
|
|
|
|
count: tanks.length,
|
|
|
|
|
},
|
|
|
|
|
});
|
|
|
|
|
} catch (error) {
|
|
|
|
|
reply.status(500).send({ error: "An error occurred while fetching the data." });
|
|
|
|
|
reply.send({ status_code: 200, data: transformedDocs, count: transformedDocs.length });
|
|
|
|
|
})
|
|
|
|
|
.catch((err) => {
|
|
|
|
|
console.error(err);
|
|
|
|
|
reply.send({ status_code: 500, error: err.message });
|
|
|
|
|
});
|
|
|
|
|
} catch (err) {
|
|
|
|
|
console.error(err);
|
|
|
|
|
reply.send({ status_code: 500, error: "Internal Server Error" });
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@ -316,7 +285,6 @@ exports.getTanksensorcount = async (req, reply) => {
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
reply.send({
|
|
|
|
|
alltanks:tanks,
|
|
|
|
|
customerId,
|
|
|
|
|
tanks: tankResults,
|
|
|
|
|
});
|
|
|
|
|