fix admin rollcall report bug

This commit is contained in:
MahanCh
2025-03-13 11:22:48 +03:30
parent ea447988d8
commit 180d17b254

View File

@@ -47,7 +47,7 @@ namespace Query.AdminReports.Handlers
if (parameters.FilterMode == FilterMode.Active)
rollCallServiceQuery = rollCallServiceQuery.Where(x => x.StartService.Date <= now && x.EndService.Date >= now);
else if(parameters.FilterMode == FilterMode.DeActive)
else if (parameters.FilterMode == FilterMode.DeActive)
rollCallServiceQuery = rollCallServiceQuery.Where(x => x.EndService.Date < now || x.StartService.Date > now);
var workshopsWithService = rollCallServiceQuery.Join(allWorkshops, x => x.WorkshopId, y => y.id, (rcs, workshop) =>
@@ -73,12 +73,15 @@ namespace Query.AdminReports.Handlers
}).ToList();
var workshopsWorkingEmployeesList = workshopLeftWorks
.Select(x => new { x.WorkshopId, TotalWorkingEmployeesCount = x.LeftWorks.Concat(x.LeftWorkInsurances).Distinct().Count() }).ToList();
.Select(x => new { x.WorkshopId, TotalWorkingEmployeesCount = x.LeftWorks.Concat(x.LeftWorkInsurances).Distinct().Count(), EmployeeIds = x.LeftWorks.Concat(x.LeftWorkInsurances).Distinct() }).ToList();
var activeEmployees = _companyContext.RollCallEmployees.AsSplitQuery().Include(x => x.EmployeesStatus).Where(x => x.EmployeesStatus.Any(y =>
y.EndDate.Date >= now) && workshopsWithService.Any(y => y.WorkshopId == x.WorkshopId)).Select(x => new { x.WorkshopId, x.EmployeeId });
var activeEmployees = _companyContext.RollCallEmployees.AsSplitQuery()
.Include(x => x.EmployeesStatus)
.Where(x => x.EmployeesStatus.Any(y => y.EndDate.Date >= now) &&
workshopsWithService.Any(y => y.WorkshopId == x.WorkshopId))
.Select(x => new { x.WorkshopId, x.EmployeeId });
var lastWeekRollCalls = _companyContext.RollCalls.AsSplitQuery().Where(x => x.StartDate.HasValue && x.StartDate.Value >= lastWeek
&& workshopsWithService.Any(y => y.WorkshopId == x.WorkshopId)).GroupBy(x => x.EmployeeId).Select(x => x.Key);
@@ -88,12 +91,12 @@ namespace Query.AdminReports.Handlers
&& workshopsWithService.Any(y => y.WorkshopId == x.WorkshopId)).Select(x => x.EmployeeId);
var activeEmployeesList = activeEmployees.ToList();
var activeEmployeesList = activeEmployees.ToList().Where(x => workshopsWorkingEmployeesList.Any(w => w.WorkshopId == x.WorkshopId && w.EmployeeIds.Contains(x.EmployeeId)));
var lastWeekRollCallsList = lastWeekRollCalls.ToList();
var leavesList = leaves.ToList();
var workshopsWithServiceList = workshopsWithService.ToList();
return workshopsWithServiceList.GroupBy(x=>x.WorkshopId)
.Select(x=>x.OrderByDescending(y=>y.ServiceStartFa).First())
return workshopsWithServiceList.GroupBy(x => x.WorkshopId)
.Select(x => x.OrderByDescending(y => y.ServiceStartFa).First())
.Select(x => new WorkshopWithRollCallServiceQueryModel()
{
IsActive = x.IsActive,
@@ -108,7 +111,7 @@ namespace Query.AdminReports.Handlers
lastWeekRollCallsList.Contains(y.EmployeeId) && !leavesList.Contains(y.EmployeeId)),
TotalEmployeesCount = workshopsWorkingEmployeesList.FirstOrDefault(y => y.WorkshopId == x.WorkshopId)?.TotalWorkingEmployeesCount ?? 0,
//UndoneWorkFlowsCount = workFlowApplication.GetAllWorkFlowCount(x.WorkshopId).Result
}).OrderByDescending(x=>x.IsActive).ToList();
}).OrderByDescending(x => x.IsActive).ToList();
}
}