Fixed dashboard projects route

This commit is contained in:
Aakash Mittal 2025-12-22 19:55:35 +05:30
parent 7ecf177467
commit 066010efac
1 changed files with 50 additions and 9 deletions

View File

@ -53,17 +53,39 @@ async function client_dashboard_projects(req, res) {
const allProjectVaIds = []; const allProjectVaIds = [];
clientProjects.forEach(project => { clientProjects.forEach(project => {
if (project.vaAssigned && project.vaAssigned.length > 0) { 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 // STEP 3: Get all VAs assigned to these projects
const allAssignedVAs = await VAModel.find({ // const allAssignedVAs = await VAModel.find({
_id: { $in: allProjectVaIds.vaId } // _id: { $in: allProjectVaIds.vaId }
}) // })
.select('userDetails.firstName userDetails.lastName userDetails.email status') // .select('userDetails.firstName userDetails.lastName userDetails.email status')
.lean() // .lean()
.exec(); // .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 // Create a map for quick VA lookup
const vaMap = allAssignedVAs.reduce((acc, va) => { const vaMap = allAssignedVAs.reduce((acc, va) => {
@ -79,9 +101,28 @@ async function client_dashboard_projects(req, res) {
const assignedVAIds = project.vaAssigned || []; const assignedVAIds = project.vaAssigned || [];
// Get VA details and check activity for each assigned VA // 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()]; 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 // Check if this VA is currently active on THIS specific project
const latestLog = await LoggedModel.findOne({ const latestLog = await LoggedModel.findOne({