diff --git a/CompanyManagment.EFCore/Repository/AdminMonthlyOverviewRepository.cs b/CompanyManagment.EFCore/Repository/AdminMonthlyOverviewRepository.cs index 71b7b637..3656a066 100644 --- a/CompanyManagment.EFCore/Repository/AdminMonthlyOverviewRepository.cs +++ b/CompanyManagment.EFCore/Repository/AdminMonthlyOverviewRepository.cs @@ -245,24 +245,51 @@ public class AdminMonthlyOverviewRepository : RepositoryBase workshopIds.Contains(o.WorkshopId)), + //var workingCheckoutEmployeeIds = _companyContext.LeftWorkList.AsNoTracking() + // .Join( + // _companyContext.Contracts.AsNoTracking(), + // leftWork => new { leftWork.EmployeeId, WorkshopId = leftWork.WorkshopId }, + // contract => new { contract.EmployeeId, WorkshopId = contract.WorkshopIds }, + // (leftWork, contract) => new { leftWork, contract } + // ) + // .Where(x => + // workshopIds.Contains(x.leftWork.WorkshopId) && + // x.leftWork.StartWorkDate <= targetEndDate && + // x.leftWork.LeftWorkDate.AddDays(-1) >= targetStartDate && + // x.contract.ContarctStart <= targetEndDate && + // x.contract.ContractEnd >= targetStartDate && + // !vipGroup.Contains(x.leftWork.EmployeeId) && + // !_companyContext.EmployeeClientTemps + // .Any(temp => temp.EmployeeId == x.leftWork.EmployeeId && temp.WorkshopId == x.leftWork.WorkshopId) + // ) + // .Select(x => new { x.leftWork.WorkshopId, x.leftWork.EmployeeId }); + + + + var workingContractEmployeeIds = _companyContext.LeftWorkList.AsNoTracking() + .Where(x => workshopIds.Contains(x.WorkshopId) && x.StartWorkDate <= nextEndMonth && x.LeftWorkDate.AddDays(-1) >= nextStartMonth && + !vipGroup.Contains(x.EmployeeId) && + !_companyContext.EmployeeClientTemps + .Any(temp => temp.EmployeeId == x.EmployeeId && temp.WorkshopId == x.WorkshopId)) + .GroupJoin(_companyContext.EmployeeComputeOptionsSet.Where(o => workshopIds.Contains(o.WorkshopId)), x => new { x.EmployeeId, x.WorkshopId }, option => new { option.EmployeeId, option.WorkshopId }, (x, options) => new { LeftWork = x, options }) .SelectMany( x => x.options.DefaultIfEmpty(), (x, option) => new { x.LeftWork, option }) - .Where(x => workshopIds.Contains(x.LeftWork.WorkshopId) && x.LeftWork.StartWorkDate <= nextEndMonth && x.LeftWork.LeftWorkDate.AddDays(-1) >= nextStartMonth && - !vipGroup.Contains(x.LeftWork.EmployeeId) && - !_companyContext.EmployeeClientTemps - .Any(temp => temp.EmployeeId == x.LeftWork.EmployeeId && temp.WorkshopId == x.LeftWork.WorkshopId) && - x.option != null ? - x.option.CreateCheckout - : x.LeftWork.Workshop.CreateCheckout) + .Where(x => x.option != null ? x.option.CreateContract + : x.LeftWork.Workshop.CreateContract) .Select(x => new { x.LeftWork.WorkshopId, x.LeftWork.EmployeeId }); + + //var workingContractEmployeeIds = _companyContext.LeftWorkList.AsNoTracking() + // .Where(x => workshopIds.Contains(x.WorkshopId) && x.StartWorkDate <= nextEndMonth && x.LeftWorkDate.AddDays(-1) >= nextStartMonth && + // !vipGroup.Contains(x.EmployeeId) && + // !_companyContext.EmployeeClientTemps + // .Any(temp => temp.EmployeeId == x.EmployeeId && temp.WorkshopId == x.WorkshopId) + // ).Select(x => new { x.WorkshopId, x.EmployeeId }); + var contractSet = (await _companyContext.Contracts.AsNoTracking() .Where(x => x.ContarctStart <= nextEndMonth && x.ContractEnd >= nextStartMonth && workshopIds.Contains(x.WorkshopIds)) .Select(x => new { x.WorkshopIds, x.EmployeeId }) @@ -370,7 +397,8 @@ public class AdminMonthlyOverviewRepository : RepositoryBase new { x.leftWork.WorkshopId, x.leftWork.EmployeeId }); + // .Select(x => new { x.leftWork.WorkshopId, x.leftWork.EmployeeId }).AsEnumerable() + // .Select(x=>(x.WorkshopId,x.EmployeeId)).ToList(); var chcekoutLeftWorks = _companyContext.LeftWorkList