|
|
|
@ -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" });
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Step 3: Check master is connected
|
|
|
|
|
if (masterSensor.connected_status !== "connected") {
|
|
|
|
|
return reply.code(400).send({ message: "Master is not in connected status" });
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Filter out issues where hardwareId matches hardwareId or masterHardwareId
|
|
|
|
|
const filteredIssues = originalIssues.filter(issue => {
|
|
|
|
|
return !(
|
|
|
|
|
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" });
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 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: [] }
|
|
|
|
|
);
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
// Update the support record
|
|
|
|
|
// 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;
|
|
|
|
|