fetch issue querstring

master^2
Bhaskar 4 months ago
parent 0d2025a856
commit 93599bfcf5

@ -5141,12 +5141,111 @@ exports.moveIssueToCategory = async (req, reply) => {
// } // }
// }; // };
// exports.particularCategory = async (req, reply) => {
// try {
// const { supportId, category } = req.params;
// if (!supportId || !category) {
// return reply.code(400).send({ error: "supportId and category are required" });
// }
// const support = await Support.findOne({ supportId }).lean();
// if (!support) {
// return reply.code(404).send({ message: "Support record not found" });
// }
// const issues = (support.categorizedIssues || []).filter(issue => issue.category === category);
// if (issues.length === 0) {
// return reply.code(404).send({ message: `No issues found for category: ${category}` });
// }
// const hardwareIds = issues.map(issue => issue.hardwareId).filter(Boolean);
// const insensors = await Insensors.find({
// hardwareId: { $in: hardwareIds },
// connected_status: "disconnected"
// }).lean();
// if (!insensors.length) {
// return reply.code(404).send({ message: "No disconnected devices found for this category." });
// }
// const orderMap = {};
// const customerId = insensors[0]?.customerId;
// if (customerId) {
// const orders = await Order.find({ customerId }).lean();
// orders.forEach(order => {
// order.master_connections.forEach(conn => {
// orderMap[conn.hardwareId] = {
// masterName: conn.master_name || null,
// location: conn.location || null
// };
// });
// });
// }
// const disconnectedIssues = [];
// for (const master of insensors.filter(i => i.type === "master")) {
// const slaves = await Insensors.find({
// connected_to: master.hardwareId,
// connected_status: "disconnected"
// }).lean();
// const slaveDetails = slaves.map(slave => {
// const slaveIssue = issues.find(i => i.hardwareId === slave.hardwareId);
// return {
// hardwareId: slave.hardwareId,
// tankName: slave.tankName || "",
// location: slave.tankLocation || "",
// connected_status: slave.connected_status,
// lora_last_disconnect_time: slave.lora_last_disconnect_time || null,
// connected_to: slave.connected_to || "",
// masterName: orderMap[master.hardwareId]?.masterName || "",
// type: "slave",
// typeOfWater: slave.typeOfWater || "",
// support_lora_last_check_time: null,
// category,
// assignedTo: slaveIssue?.assignedTo || null // <-- Include assigned details here
// };
// });
// const masterIssue = issues.find(i => i.hardwareId === master.hardwareId);
// 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 || null,
// support_gsm_last_check_time: null,
// connected_slave_count: slaveDetails.length,
// connected_slaves: slaveDetails,
// category,
// assignedTo: masterIssue?.assignedTo || null // <-- Include assigned details here
// });
// }
// return reply.send({
// status_code: 200,
// supportId,
// totalMasters: disconnectedIssues.length,
// disconnectedIssues
// });
// } catch (err) {
// console.error("Error in particularCategory:", err);
// return reply.code(500).send({ error: "Internal server error" });
// }
// };
exports.particularCategory = async (req, reply) => { exports.particularCategory = async (req, reply) => {
try { try {
const { supportId, category } = req.params; const { supportId, category } = req.params;
const { customerId } = req.query; // ✅ from query string
if (!supportId || !category) { if (!customerId || !supportId || !category) {
return reply.code(400).send({ error: "supportId and category are required" }); return reply.code(400).send({ error: "customerId, supportId, and category are required" });
} }
const support = await Support.findOne({ supportId }).lean(); const support = await Support.findOne({ supportId }).lean();
@ -5154,13 +5253,18 @@ exports.particularCategory = async (req, reply) => {
return reply.code(404).send({ message: "Support record not found" }); return reply.code(404).send({ message: "Support record not found" });
} }
const issues = (support.categorizedIssues || []).filter(issue => issue.category === category); const issues = (support.categorizedIssues || []).filter(
issue => issue.category === category
);
if (issues.length === 0) { if (issues.length === 0) {
return reply.code(404).send({ message: `No issues found for category: ${category}` }); return reply.code(404).send({ message: `No issues found for category: ${category}` });
} }
const hardwareIds = issues.map(issue => issue.hardwareId).filter(Boolean); const hardwareIds = issues.map(issue => issue.hardwareId).filter(Boolean);
const insensors = await Insensors.find({ const insensors = await Insensors.find({
customerId,
hardwareId: { $in: hardwareIds }, hardwareId: { $in: hardwareIds },
connected_status: "disconnected" connected_status: "disconnected"
}).lean(); }).lean();
@ -5170,23 +5274,21 @@ exports.particularCategory = async (req, reply) => {
} }
const orderMap = {}; const orderMap = {};
const customerId = insensors[0]?.customerId; const orders = await Order.find({ customerId }).lean();
if (customerId) { orders.forEach(order => {
const orders = await Order.find({ customerId }).lean(); order.master_connections.forEach(conn => {
orders.forEach(order => { orderMap[conn.hardwareId] = {
order.master_connections.forEach(conn => { masterName: conn.master_name || null,
orderMap[conn.hardwareId] = { location: conn.location || null
masterName: conn.master_name || null, };
location: conn.location || null
};
});
}); });
} });
const disconnectedIssues = []; const disconnectedIssues = [];
for (const master of insensors.filter(i => i.type === "master")) { for (const master of insensors.filter(i => i.type === "master")) {
const slaves = await Insensors.find({ const slaves = await Insensors.find({
customerId,
connected_to: master.hardwareId, connected_to: master.hardwareId,
connected_status: "disconnected" connected_status: "disconnected"
}).lean(); }).lean();
@ -5199,13 +5301,14 @@ exports.particularCategory = async (req, reply) => {
location: slave.tankLocation || "", location: slave.tankLocation || "",
connected_status: slave.connected_status, connected_status: slave.connected_status,
lora_last_disconnect_time: slave.lora_last_disconnect_time || null, lora_last_disconnect_time: slave.lora_last_disconnect_time || null,
team_member_support_lora_last_check_time: slave.team_member_support_lora_last_check_time,
connected_to: slave.connected_to || "", connected_to: slave.connected_to || "",
masterName: orderMap[master.hardwareId]?.masterName || "", masterName: orderMap[master.hardwareId]?.masterName || "",
type: "slave", type: "slave",
typeOfWater: slave.typeOfWater || "", typeOfWater: slave.typeOfWater || "",
support_lora_last_check_time: null, support_lora_last_check_time: null,
category, category,
assignedTo: slaveIssue?.assignedTo || null // <-- Include assigned details here assignedTo: slaveIssue?.assignedTo || null
}; };
}); });
@ -5218,17 +5321,19 @@ exports.particularCategory = async (req, reply) => {
type: "master", type: "master",
connected_status: master.connected_status, connected_status: master.connected_status,
gsm_last_disconnect_time: master.gsm_last_disconnect_time || null, gsm_last_disconnect_time: master.gsm_last_disconnect_time || null,
team_member_support_gsm_last_check_time: master.team_member_support_gsm_last_check_time,
support_gsm_last_check_time: null, support_gsm_last_check_time: null,
connected_slave_count: slaveDetails.length, connected_slave_count: slaveDetails.length,
connected_slaves: slaveDetails, connected_slaves: slaveDetails,
category, category,
assignedTo: masterIssue?.assignedTo || null // <-- Include assigned details here assignedTo: masterIssue?.assignedTo || null
}); });
} }
return reply.send({ return reply.send({
status_code: 200, status_code: 200,
supportId, supportId,
customerId,
totalMasters: disconnectedIssues.length, totalMasters: disconnectedIssues.length,
disconnectedIssues disconnectedIssues
}); });
@ -5238,6 +5343,8 @@ exports.particularCategory = async (req, reply) => {
return reply.code(500).send({ error: "Internal server error" }); return reply.code(500).send({ error: "Internal server error" });
} }
}; };
exports.assignCategorizeIssue = async (request, reply) => { exports.assignCategorizeIssue = async (request, reply) => {
const { supportId } = request.params; const { supportId } = request.params;
const { support_teamMemberId, startDate, endDate, category, masterHardwareId } = request.body; const { support_teamMemberId, startDate, endDate, category, masterHardwareId } = request.body;

@ -745,6 +745,28 @@ module.exports = function (fastify, opts, next) {
handler: installationController.moveIssueToCategory handler: installationController.moveIssueToCategory
}); });
// fastify.get('/api/support/categorizedIssues/:supportId/:category', {
// schema: {
// description: 'Get all issues in a particular category for a support record',
// tags: ['Support'],
// summary: 'Fetch issues by category',
// params: {
// type: 'object',
// required: ['supportId', 'category'],
// properties: {
// supportId: { type: 'string' },
// //customerId: { type: 'string' },
// category: {
// type: 'string',
// enum: ['Power Outage', 'Level1', 'Pending', 'Onsite Issues'] // your allowed categories
// }
// }
// },
// },
// handler: installationController.particularCategory
// });
fastify.get('/api/support/categorizedIssues/:supportId/:category', { fastify.get('/api/support/categorizedIssues/:supportId/:category', {
schema: { schema: {
description: 'Get all issues in a particular category for a support record', description: 'Get all issues in a particular category for a support record',
@ -755,16 +777,21 @@ module.exports = function (fastify, opts, next) {
required: ['supportId', 'category'], required: ['supportId', 'category'],
properties: { properties: {
supportId: { type: 'string' }, supportId: { type: 'string' },
//customerId: { type: 'string' },
category: { category: {
type: 'string', type: 'string',
enum: ['Power Outage', 'Level1', 'Pending', 'Onsite Issues'] // your allowed categories enum: ['Power Outage', 'Level1', 'Pending', 'Onsite Issues']
} }
} }
}, },
querystring: { // ✅ allow customerId in query string
type: 'object',
required: ['customerId'],
properties: {
customerId: { type: 'string' }
}
}
}, },
handler: installationController.particularCategory handler: installationController.particularCategory
}); });

Loading…
Cancel
Save