From 066010efac677aea3d7f82f53b449a4bd9e43bcb Mon Sep 17 00:00:00 2001 From: Aakash Date: Mon, 22 Dec 2025 19:55:35 +0530 Subject: [PATCH] Fixed dashboard projects route --- .../clientDashboardProjects.controller.js | 59 ++++++++++++++++--- 1 file changed, 50 insertions(+), 9 deletions(-) diff --git a/src/controllers/client/dashboard/clientDashboardProjects.controller.js b/src/controllers/client/dashboard/clientDashboardProjects.controller.js index 1d9372f..f5307e0 100644 --- a/src/controllers/client/dashboard/clientDashboardProjects.controller.js +++ b/src/controllers/client/dashboard/clientDashboardProjects.controller.js @@ -53,17 +53,39 @@ async function client_dashboard_projects(req, res) { const allProjectVaIds = []; clientProjects.forEach(project => { if (project.vaAssigned && project.vaAssigned.length > 0) { - allProjectVaIds.push(...project.vaAssigned); + // allProjectVaIds.push(...project.vaAssigned); + project.vaAssigned.forEach(vaItem => { + // Handle different possible structures + if (vaItem._id) { + allProjectVaIds.push(vaItem._id); + } else if (vaItem.vaId) { + allProjectVaIds.push(vaItem.vaId); + } else if (typeof vaItem === 'string') { + allProjectVaIds.push(vaItem); + } else if (vaItem.id) { + allProjectVaIds.push(vaItem.id); + } + }); } }); // STEP 3: Get all VAs assigned to these projects - const allAssignedVAs = await VAModel.find({ - _id: { $in: allProjectVaIds.vaId } - }) - .select('userDetails.firstName userDetails.lastName userDetails.email status') - .lean() - .exec(); + // const allAssignedVAs = await VAModel.find({ + // _id: { $in: allProjectVaIds.vaId } + // }) + // .select('userDetails.firstName userDetails.lastName userDetails.email status') + // .lean() + // .exec(); + + let allAssignedVAs = []; + if (allProjectVaIds.length > 0) { + allAssignedVAs = await VAModel.find({ + _id: { $in: allProjectVaIds } + }) + .select('userDetails.firstName userDetails.lastName userDetails.email status') + .lean() + .exec(); + } // Create a map for quick VA lookup const vaMap = allAssignedVAs.reduce((acc, va) => { @@ -79,9 +101,28 @@ async function client_dashboard_projects(req, res) { const assignedVAIds = project.vaAssigned || []; // Get VA details and check activity for each assigned VA - const assignedVADetails = await Promise.all(assignedVAIds.map(async (vaId) => { + const assignedVADetails = await Promise.all(assignedVAIds.map(async (vaItem) => { + // const va = vaMap[vaId.toString()]; + // if (!va) return null; + + let vaId; + if (vaItem._id) { + vaId = vaItem._id; + } else if (vaItem.vaId) { + vaId = vaItem.vaId; + } else if (typeof vaItem === 'string') { + vaId = vaItem; + } else if (vaItem.id) { + vaId = vaItem.id; + } else { + vaId = vaItem; // Try as-is + } + const va = vaMap[vaId.toString()]; - if (!va) return null; + if (!va) { + console.log(`VA with ID ${vaId} not found in vaMap`); + return null; + } // Check if this VA is currently active on THIS specific project const latestLog = await LoggedModel.findOne({