From aa4eee18698742e7f7254bb421c86878007c091f Mon Sep 17 00:00:00 2001 From: Bhaskar Date: Mon, 1 Sep 2025 15:58:33 +0530 Subject: [PATCH] CHANGES Get Team Members by Department ID --- src/controllers/installationController.js | 65 +++++++++++++++++++---- 1 file changed, 56 insertions(+), 9 deletions(-) diff --git a/src/controllers/installationController.js b/src/controllers/installationController.js index b909330c..7db01d74 100644 --- a/src/controllers/installationController.js +++ b/src/controllers/installationController.js @@ -415,29 +415,77 @@ exports.createTeamMember = async (req, reply) => { // }; // Controller +// exports.getTeamMembers = async (request, reply) => { +// try { +// const { departmentId, officeName, city } = request.params; + +// // Make regex tolerate spaces +// const department = await Deparments.findOne({ +// departmentId, +// officeName: { $regex: new RegExp(`^\\s*${officeName.trim()}\\s*$`, "i") }, +// city: { $regex: new RegExp(`^\\s*${city.trim()}\\s*$`, "i") } +// }).lean(); + +// console.log("department", department); + +// if (!department) { +// return reply.status(404).send({ +// simplydata: { +// error: true, +// message: "Department not found for given office and city", +// }, +// }); +// } + +// const teamMembers = department.team_member?.team_member || []; + +// return reply.send({ +// simplydata: { +// error: false, +// message: "Team members retrieved successfully", +// teamMembers, +// }, +// }); + +// } catch (err) { +// console.error("Error fetching team members:", err); +// reply.status(500).send({ +// simplydata: { +// error: true, +// message: "Internal server error", +// }, +// }); +// } +// }; + exports.getTeamMembers = async (request, reply) => { try { const { departmentId, officeName, city } = request.params; - // Make regex tolerate spaces - const department = await Deparments.findOne({ + // Build query dynamically + const query = { departmentId, officeName: { $regex: new RegExp(`^\\s*${officeName.trim()}\\s*$`, "i") }, - city: { $regex: new RegExp(`^\\s*${city.trim()}\\s*$`, "i") } - }).lean(); + }; - console.log("department", department); + // Only add city filter if city !== "ALL" + if (city && city.toUpperCase() !== "ALL") { + query.city = { $regex: new RegExp(`^\\s*${city.trim()}\\s*$`, "i") }; + } - if (!department) { + const departments = await Deparments.find(query).lean(); + + if (!departments.length) { return reply.status(404).send({ simplydata: { error: true, - message: "Department not found for given office and city", + message: "No departments found for given filters", }, }); } - const teamMembers = department.team_member?.team_member || []; + // Collect team members from all matching departments + const teamMembers = departments.flatMap(dep => dep.team_member?.team_member || []); return reply.send({ simplydata: { @@ -459,7 +507,6 @@ exports.getTeamMembers = async (request, reply) => { }; - // exports.getAllDepartments = async (request, reply) => { // try { // const { officeName, city } = request.params;