filters are added in office name and city to get the details

master^2
Bhaskar 4 months ago
parent cc15850e96
commit 7b1f207114

@ -1271,10 +1271,13 @@ const getDepartmentsByName = async (officeName, city, departmentName) => {
try { try {
const trimmedCity = city.trim(); const trimmedCity = city.trim();
// Allow for extra whitespace before or after the city value in the database
const query = { const query = {
city: { $regex: `^\\s*${trimmedCity}\\s*$`, $options: "i" } $or: [
{ city: { $regex: `^\\s*${trimmedCity}\\s*$`, $options: "i" } },
{ officeName: { $regex: `^\\s*${trimmedCity}\\s*$`, $options: "i" } }
]
}; };
console.log("MongoDB Query:", JSON.stringify(query, null, 2)); console.log("MongoDB Query:", JSON.stringify(query, null, 2));
const result = await Deparments.find(query) const result = await Deparments.find(query)
@ -1284,10 +1287,48 @@ const getDepartmentsByName = async (officeName, city, departmentName) => {
// Remove duplicate department names // Remove duplicate department names
return [...new Set(result.map(doc => doc.departmentName))]; return [...new Set(result.map(doc => doc.departmentName))];
} catch (error) { } catch (error) {
console.error("Error fetching departments by city:", error); console.error("Error fetching departments by city or officeName:", error);
throw new Error("Error fetching departments by city."); throw new Error("Error fetching departments by city or officeName.");
} }
}; };
exports.getOffices = async (req, reply) => {
try {
const { officeName, city } = req.params;
// Build dynamic filter
const filter = {};
if (officeName && officeName !== 'ALL') {
// support multiple office names as comma-separated
const officeNames = officeName.split(',').map(name => name.trim());
filter.officeName = { $in: officeNames };
}
if (city && city !== 'ALL') {
// support multiple cities as comma-separated
const cities = city.split(',').map(c => c.trim());
filter.city = { $in: cities };
}
const offices = await Deparments.find(filter).lean();
reply.send({
status_code: 200,
message: "Fetched successfully",
data: offices,
});
} catch (error) {
console.error("Error in getOffices:", error);
reply.code(500).send({
status_code: 500,
message: "Internal server error",
error: error.message,
});
}
};
// API route handler // API route handler
exports.getDepartmentsByCity = async (req, reply) => { exports.getDepartmentsByCity = async (req, reply) => {

@ -667,7 +667,7 @@ module.exports = function (fastify, opts, next) {
fastify.route({ fastify.route({
method: "GET", method: "GET",
url: "/api/departmentNameList/:city", url: "/api/departmentNameList/:city/:officeName",
schema: { schema: {
tags: ["Department"], tags: ["Department"],
description: "Get a list of department names for a given city", description: "Get a list of department names for a given city",
@ -675,12 +675,14 @@ module.exports = function (fastify, opts, next) {
params: { params: {
type: "object", type: "object",
properties: { properties: {
city: { type: "string" } city: { type: "string" },
officeName: { type: "string" },
}, },
required: ["city"], required: ["city"],
}, },
}, },
handler: departmentController.getDepartmentsByCity, handler: departmentController.getOffices,
}); });
fastify.route({ fastify.route({

Loading…
Cancel
Save