remove leftWork for rejected employeedocument rejected

This commit is contained in:
MahanCh
2025-05-10 19:53:20 +03:30
parent cebb525968
commit a620872de1

View File

@@ -1035,28 +1035,10 @@ public class EmployeeDocumentsRepository : RepositoryBase<long, EmployeeDocument
{
var now = DateTime.Now;
// آماده‌سازی activeEmployees یک‌بار با EF و انتقال به حافظه
var activeEmployees = _companyContext.LeftWorkList
.Where(x => workshops.Contains(x.WorkshopId) && x.LeftWorkDate.AddDays(-1) >= now)
.Select(x => new { x.WorkshopId, x.EmployeeId });
var clientTemp = _companyContext.EmployeeClientTemps
.Where(x => workshops.Contains(x.WorkshopId))
.Select(x => new { x.WorkshopId, x.EmployeeId });
var leftWorkTemp = _companyContext.LeftWorkTemps
.Where(x => workshops.Contains(x.WorkshopId))
.Select(x => new { x.WorkshopId, x.EmployeeId });
// ترکیب کل لیست‌ها در حافظه
var allActiveEmployees = activeEmployees
.Concat(clientTemp)
.Concat(leftWorkTemp);
// دریافت فقط اطلاعات مورد نیاز
var employeeDocumentsQuery = _companyContext.EmployeeDocuments
.Where(x => workshops.Contains(x.WorkshopId)
&& allActiveEmployees.Any(a=>a.WorkshopId == x.WorkshopId && a.EmployeeId == x.EmployeeId)
&& x.IsSentToChecker == false
&& x.HasRejectedItems)
.Where(x => x.EmployeeDocumentItemCollection
@@ -1104,29 +1086,10 @@ public class EmployeeDocumentsRepository : RepositoryBase<long, EmployeeDocument
public async Task<List<EmployeeDocumentsViewModel>> GetRejectedItemsByWorkshopIdAndRoleForAdminWorkFlow(long workshopId, long roleId)
{
var employeeIdsInWorkshop = await _companyContext.LeftWorkList
.Where(x => x.WorkshopId == workshopId && x.LeftWorkDate.AddDays(-1) >= DateTime.Today)
.Select(x => new { x.EmployeeId, FullName = x.Employee.FName + " " + x.Employee.LName })
.Union(
_companyContext.EmployeeClientTemps
.Where(x => x.WorkshopId == workshopId)
.Select(x => new { x.EmployeeId, FullName = x.EmployeeFullName })
)
.Union(
_companyContext.LeftWorkTemps
.Where(x => x.WorkshopId == workshopId)
.Join(_companyContext.Employees, x => x.EmployeeId, e => e.id,
(x, e) => new { x.EmployeeId, FullName = e.FName + " " + e.LName })
)
.Distinct()
.ToListAsync();
var employeeIdList = employeeIdsInWorkshop.Select(x => x.EmployeeId).ToList();
var edItemsQuery = _companyContext.EmployeeDocumentItems
.Where(x => x.WorkshopId == workshopId &&
x.DocumentStatus == DocumentStatus.Rejected &&
employeeIdList.Contains(x.EmployeeId) &&
x.EmployeeDocuments.IsSentToChecker == false &&
x.EmployeeDocuments.HasRejectedItems)
.Include(x => x.EmployeeDocuments).AsSplitQuery();
@@ -1165,6 +1128,9 @@ public class EmployeeDocumentsRepository : RepositoryBase<long, EmployeeDocument
.Select(x => new MediaViewModel { Id = x.id, Path = x.Path })
.ToListAsync();
var employeeIds = edItemsGrouped.Select(x => x.EmployeeId).ToList();
var employees = _companyContext.Employees.Where(x => employeeIds.Contains(x.id)).ToList();
var result = edItemsGrouped.GroupBy(x => x.EmployeeId)
@@ -1184,7 +1150,7 @@ public class EmployeeDocumentsRepository : RepositoryBase<long, EmployeeDocument
StatusString = y.DocumentStatus.ToString()
}).ToList();
var employeeInfo = employeeIdsInWorkshop.First(e => e.EmployeeId == x.Key);
var employeeInfo = employees.First(e => e.id == x.Key);
//var requiredItemsUploaded = employeeLatestConfirmedDocuments
// .Where(y => requiredDocs.Contains(y.DocumentItemLabel)).Select(y => y.DocumentItemLabel)