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" }); return reply.code(400).send({ error: "supportId and hardwareId are required" });
} }
// Find the support record // Step 1: Get support record
const supportRecord = await Support.findOne({ supportId }).lean(); const supportRecord = await Support.findOne({ supportId });
if (!supportRecord) { if (!supportRecord) {
return reply.code(404).send({ message: "No support record found for this supportId" }); 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 // Step 3: Check master is connected
const filteredIssues = originalIssues.filter(issue => { if (masterSensor.connected_status !== "connected") {
return !( return reply.code(400).send({ message: "Master is not in connected status" });
issue.hardwareId === hardwareId || }
issue.masterHardwareId === hardwareId
); // 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( await Support.updateOne(
{ supportId }, { supportId },
{ $set: { issues: filteredIssues } } {
$set: {
issues: remainingIssues,
resolvedIssues: [...resolvedIssues, ...movedIssues]
}
}
); );
return reply.send({ return reply.send({
status_code: 200, status_code: 200,
message: `Issue(s) with hardwareId "${hardwareId}" removed successfully.`, message: `Master and all connected slaves are connected. ${movedIssues.length} issue(s) moved to resolved.`,
remainingIssues: filteredIssues movedHardwareId: hardwareId,
resolvedIssues: movedIssues
}); });
} catch (error) { } catch (error) {
console.error("Error in removeIssueByHardwareId:", error); console.error("Error in getRemoveConnectedMastersWithSlaves:", error);
return reply.code(500).send({ error: "Internal server error" }); return reply.code(500).send({ error: "Internal server error" });
} }
}; };
// exports.getDisconnectedCustomerDetails = async (req, reply) => { // exports.getDisconnectedCustomerDetails = async (req, reply) => {
// try { // try {
// const { supportId } = req.params; // const { supportId } = req.params;

Loading…
Cancel
Save