Added on hold job count in service project list API
This commit is contained in:
parent
f171b0add6
commit
230267bdb9
@ -48,7 +48,7 @@ namespace Marco.Pms.Services.Controllers
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region =================================================================== Job Status APIs ===================================================================
|
||||
#region =================================================================== Team role APIs ===================================================================
|
||||
[HttpGet("team-roles/list")]
|
||||
public async Task<IActionResult> GetTeamRoles()
|
||||
{
|
||||
|
||||
@ -126,8 +126,10 @@ namespace Marco.Pms.Services.Service
|
||||
.Select(g => new
|
||||
{
|
||||
ProjectId = g.Key,
|
||||
JobsPassedDueDateCount = g.Count(jt => jt.DueDate.Date < DateTime.UtcNow.Date),
|
||||
ActiveJobsCount = g.Count(jt => jt.StatusId == AssignedStatus || jt.StatusId == InProgressStatus || jt.StatusId == ReviewStatus)
|
||||
JobsPassedDueDateCount = g.Count(jt => jt.StatusId != DoneStatus && jt.StatusId != ClosedStatus && jt.DueDate.Date < DateTime.UtcNow.Date),
|
||||
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();
|
||||
});
|
||||
@ -146,25 +148,9 @@ namespace Marco.Pms.Services.Service
|
||||
.ToListAsync();
|
||||
});
|
||||
|
||||
var jobMembersTask = Task.Run(async () =>
|
||||
{
|
||||
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);
|
||||
await Task.WhenAll(jobTask, teamMemberTask);
|
||||
|
||||
var jobTickets = jobTask.Result;
|
||||
var jobMembers = jobMembersTask.Result;
|
||||
var teamMembers = teamMemberTask.Result;
|
||||
|
||||
// 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.ActiveJobsCount = jobTickets.FirstOrDefault(jt => jt.ProjectId == sp.Id)?.ActiveJobsCount ?? 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;
|
||||
}).ToList();
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user