Remove all connected list for Support

master^2
Bhaskar 3 months ago
parent 9e416b8e1a
commit 975fd609c6

@ -7043,40 +7043,74 @@ exports.getRemoveConnectedMastersWithSlaves = async (req, reply) => {
return reply.code(400).send({ error: "supportId and hardwareId are required" });
}
// Find the support record
const supportRecord = await Support.findOne({ supportId }).lean();
// Step 1: Get support record
const supportRecord = await Support.findOne({ supportId });
if (!supportRecord) {
return reply.code(404).send({ message: "No support record found for this supportId" });
}
const originalIssues = supportRecord.issues || [];
// Step 2: Get master sensor
const masterSensor = await Insensors.findOne({ hardwareId, type: "master" }).lean();
if (!masterSensor) {
return reply.code(404).send({ message: "Master not found in Insensors" });
}
// Filter out issues where hardwareId matches hardwareId or masterHardwareId
const filteredIssues = originalIssues.filter(issue => {
return !(
issue.hardwareId === hardwareId ||
issue.masterHardwareId === hardwareId
);
});
// Step 3: Check master is connected
if (masterSensor.connected_status !== "connected") {
return reply.code(400).send({ message: "Master is not in connected status" });
}
// Step 4: Get connected slave sensors
const slaveSensors = await Insensors.find({ connected_to: hardwareId, type: "slave" }).lean();
const allSlavesConnected = slaveSensors.every(slave => slave.connected_status === "connected");
if (!allSlavesConnected) {
return reply.code(400).send({ message: "Not all connected slaves are in connected status" });
}
// Update the support record
// Step 5: Move issues from issues → resolvedIssues if hardwareId or masterHardwareId matches
const currentIssues = supportRecord.issues || [];
const resolvedIssues = supportRecord.resolvedIssues || [];
const { movedIssues, remainingIssues } = currentIssues.reduce(
(acc, issue) => {
if (issue.hardwareId === hardwareId || issue.masterHardwareId === hardwareId) {
issue.resolvedAt = new Date();
acc.movedIssues.push(issue);
} else {
acc.remainingIssues.push(issue);
}
return acc;
},
{ movedIssues: [], remainingIssues: [] }
);
// Step 6: Save updates
await Support.updateOne(
{ supportId },
{ $set: { issues: filteredIssues } }
{
$set: {
issues: remainingIssues,
resolvedIssues: [...resolvedIssues, ...movedIssues]
}
}
);
return reply.send({
status_code: 200,
message: `Issue(s) with hardwareId "${hardwareId}" removed successfully.`,
remainingIssues: filteredIssues
message: `Master and all connected slaves are connected. ${movedIssues.length} issue(s) moved to resolved.`,
movedHardwareId: hardwareId,
resolvedIssues: movedIssues
});
} catch (error) {
console.error("Error in removeIssueByHardwareId:", error);
console.error("Error in getRemoveConnectedMastersWithSlaves:", error);
return reply.code(500).send({ error: "Internal server error" });
}
};
// exports.getDisconnectedCustomerDetails = async (req, reply) => {
// try {
// const { supportId } = req.params;

Loading…
Cancel
Save