master^2
Bhaskar 5 months ago
parent 6ca57eaf45
commit 13bff31a0a

@ -4278,29 +4278,121 @@ exports.assignCategorizeIssue = async (request, reply) => {
exports.getCategorizedIssue = async (request, reply) => {
const { support_teamMemberId } = request.params;
const supports = await Support.aggregate([
{ $unwind: '$categorizedIssues' },
{ $match: { 'categorizedIssues.assignedTo.support_teamMemberId': support_teamMemberId } },
{
$group: {
_id: '$_id',
supportId: { $first: '$supportId' },
categorizedIssues: { $push: '$categorizedIssues' }
}
exports.getCategorizedIssue = async (request, reply) => {
try {
const { support_teamMemberId } = request.params;
if (!support_teamMemberId) {
return reply.code(400).send({ error: "support_teamMemberId is required" });
}
]);
if (supports.length === 0) {
return reply.code(404).send({ message: 'No categorized issues assigned to this team member.' });
}
const supportRecords = await Support.find({
'categorizedIssues.assignedTo.support_teamMemberId': support_teamMemberId
}).lean();
if (!supportRecords.length) {
return reply.code(404).send({ message: 'No categorized issues assigned to this team member.' });
}
return reply.send({
supportId: supports[0].supportId,
categorizedIssues: supports[0].categorizedIssues
});
const allIssues = supportRecords.flatMap(s =>
s.categorizedIssues
.filter(i => i.assignedTo?.support_teamMemberId === support_teamMemberId)
.map(i => ({ ...i, supportId: s.supportId }))
);
const supportId = allIssues[0].supportId;
const hardwareIds = allIssues.map(issue => issue.hardwareId).filter(Boolean);
const masterHardwareIds = allIssues.map(issue => issue.masterHardwareId).filter(Boolean);
const insensors = await Insensors.find({
$or: [
{ hardwareId: { $in: hardwareIds } },
{ hardwareId: { $in: masterHardwareIds } }
],
connected_status: "disconnected"
}).lean();
if (!insensors.length) {
return reply.code(404).send({ message: "No disconnected devices found for this team member." });
}
const customerId = insensors[0]?.customerId || null;
const orders = customerId ? await Order.find({ customerId }).lean() : [];
const orderMap = {};
orders.forEach(order => {
order.master_connections?.forEach(conn => {
orderMap[conn.hardwareId] = {
masterName: conn.master_name || null,
location: conn.location || null
};
});
});
const disconnectedIssues = [];
const masters = insensors.filter(d => d.type === "master");
for (const master of masters) {
const masterIssue = allIssues.find(i => i.masterHardwareId === master.hardwareId);
if (!masterIssue) continue;
const slaves = await Insensors.find({
connected_to: master.hardwareId,
connected_status: "disconnected",
type: "slave"
}).lean();
const slaveDetails = [];
for (const slave of slaves) {
const issue = allIssues.find(i =>
i.hardwareId === slave.hardwareId ||
(Array.isArray(i.hardwareIds) && i.hardwareIds.includes(slave.hardwareId))
);
slaveDetails.push({
hardwareId: slave.hardwareId,
tankName: slave.tankName || "",
location: slave.location || "",
connected_status: slave.connected_status,
lora_last_disconnect_time: slave.lora_last_disconnect_time
? moment(slave.lora_last_disconnect_time).format("DD-MM-YYYY HH:mm:ss")
: null,
connected_to: slave.connected_to || "",
masterName: orderMap[master.hardwareId]?.masterName || "",
type: "slave",
typeOfWater: "",
support_lora_last_check_time: null,
category: issue?.category || ""
});
}
disconnectedIssues.push({
hardwareId: master.hardwareId,
masterName: orderMap[master.hardwareId]?.masterName || "",
location: orderMap[master.hardwareId]?.location || "",
type: "master",
connected_status: master.connected_status,
gsm_last_disconnect_time: master.gsm_last_disconnect_time
? moment(master.gsm_last_disconnect_time).format("DD-MM-YYYY HH:mm:ss")
: null,
support_gsm_last_check_time: null,
connected_slave_count: slaveDetails.length,
connected_slaves: slaveDetails,
category: masterIssue?.category || ""
});
}
return reply.send({
status_code: 200,
supportId,
totalMasters: disconnectedIssues.length,
disconnectedIssues
});
} catch (error) {
console.error("Error in getCategorizedIssue:", error);
return reply.code(500).send({ error: "Internal server error" });
}
};

Loading…
Cancel
Save