Added on hold job count in service project list API

This commit is contained in:
ashutosh.nehete 2025-11-18 14:47:24 +05:30
parent f171b0add6
commit 230267bdb9
2 changed files with 8 additions and 21 deletions

View File

@ -48,7 +48,7 @@ namespace Marco.Pms.Services.Controllers
} }
#endregion #endregion
#region =================================================================== Job Status APIs =================================================================== #region =================================================================== Team role APIs ===================================================================
[HttpGet("team-roles/list")] [HttpGet("team-roles/list")]
public async Task<IActionResult> GetTeamRoles() public async Task<IActionResult> GetTeamRoles()
{ {

View File

@ -126,8 +126,10 @@ namespace Marco.Pms.Services.Service
.Select(g => new .Select(g => new
{ {
ProjectId = g.Key, ProjectId = g.Key,
JobsPassedDueDateCount = g.Count(jt => jt.DueDate.Date < DateTime.UtcNow.Date), JobsPassedDueDateCount = g.Count(jt => jt.StatusId != DoneStatus && jt.StatusId != ClosedStatus && jt.DueDate.Date < DateTime.UtcNow.Date),
ActiveJobsCount = g.Count(jt => jt.StatusId == AssignedStatus || jt.StatusId == InProgressStatus || jt.StatusId == ReviewStatus) ActiveJobsCount = g.Count(jt => jt.StatusId != DoneStatus && jt.StatusId != ClosedStatus && jt.StatusId != OnHoldStatus),
AssignedJobsCount = g.Count(jt => jt.StatusId == AssignedStatus),
OnHoldJobsCount = g.Count(jt => jt.StatusId == OnHoldStatus)
}) })
.ToListAsync(); .ToListAsync();
}); });
@ -146,25 +148,9 @@ namespace Marco.Pms.Services.Service
.ToListAsync(); .ToListAsync();
}); });
var jobMembersTask = Task.Run(async () => await Task.WhenAll(jobTask, teamMemberTask);
{
await using var context = await _dbContextFactory.CreateDbContextAsync();
return await context.JobEmployeeMappings
.Include(jem => jem.JobTicket)
.Where(jem => jem.JobTicket != null && serviceProjectIds.Contains(jem.JobTicket.ProjectId) && jem.TenantId == tenantId)
.GroupBy(jem => jem.JobTicket!.ProjectId)
.Select(g => new
{
ProjectId = g.Key,
JobMembersCount = g.Select(jem => jem.AssigneeId).Distinct().Count()
})
.ToListAsync();
});
await Task.WhenAll(jobTask, jobMembersTask, teamMemberTask);
var jobTickets = jobTask.Result; var jobTickets = jobTask.Result;
var jobMembers = jobMembersTask.Result;
var teamMembers = teamMemberTask.Result; var teamMembers = teamMemberTask.Result;
// Map the service projects into view models including related data // Map the service projects into view models including related data
@ -180,7 +166,8 @@ namespace Marco.Pms.Services.Service
projectVm.TeamMemberCount = teamMembers.FirstOrDefault(tm => tm.ProjectId == sp.Id)?.TeamMemberCount ?? 0; projectVm.TeamMemberCount = teamMembers.FirstOrDefault(tm => tm.ProjectId == sp.Id)?.TeamMemberCount ?? 0;
projectVm.ActiveJobsCount = jobTickets.FirstOrDefault(jt => jt.ProjectId == sp.Id)?.ActiveJobsCount ?? 0; projectVm.ActiveJobsCount = jobTickets.FirstOrDefault(jt => jt.ProjectId == sp.Id)?.ActiveJobsCount ?? 0;
projectVm.JobsPassedDueDateCount = jobTickets.FirstOrDefault(jt => jt.ProjectId == sp.Id)?.JobsPassedDueDateCount ?? 0; projectVm.JobsPassedDueDateCount = jobTickets.FirstOrDefault(jt => jt.ProjectId == sp.Id)?.JobsPassedDueDateCount ?? 0;
projectVm.JobMembersCount = jobMembers.FirstOrDefault(jm => jm.ProjectId == sp.Id)?.JobMembersCount ?? 0; projectVm.AssignedJobsCount = jobTickets.FirstOrDefault(jt => jt.ProjectId == sp.Id)?.AssignedJobsCount ?? 0;
projectVm.OnHoldJobsCount = jobTickets.FirstOrDefault(jt => jt.ProjectId == sp.Id)?.OnHoldJobsCount ?? 0;
return projectVm; return projectVm;
}).ToList(); }).ToList();