From 230267bdb9d02f7458d74ee113604dd8b484ad57 Mon Sep 17 00:00:00 2001 From: "ashutosh.nehete" Date: Tue, 18 Nov 2025 14:47:24 +0530 Subject: [PATCH] Added on hold job count in service project list API --- .../Controllers/MasterController.cs | 2 +- .../Service/ServiceProjectService.cs | 27 +++++-------------- 2 files changed, 8 insertions(+), 21 deletions(-) diff --git a/Marco.Pms.Services/Controllers/MasterController.cs b/Marco.Pms.Services/Controllers/MasterController.cs index ff2c18e..8668ee3 100644 --- a/Marco.Pms.Services/Controllers/MasterController.cs +++ b/Marco.Pms.Services/Controllers/MasterController.cs @@ -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 GetTeamRoles() { diff --git a/Marco.Pms.Services/Service/ServiceProjectService.cs b/Marco.Pms.Services/Service/ServiceProjectService.cs index 5994f2f..2c2828f 100644 --- a/Marco.Pms.Services/Service/ServiceProjectService.cs +++ b/Marco.Pms.Services/Service/ServiceProjectService.cs @@ -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();