diff --git a/Company.Domain/ReportAgg/IReportRepository.cs b/Company.Domain/ReportAgg/IReportRepository.cs index 7615bbf7..892391d1 100644 --- a/Company.Domain/ReportAgg/IReportRepository.cs +++ b/Company.Domain/ReportAgg/IReportRepository.cs @@ -11,21 +11,23 @@ namespace Company.Domain.ReportAgg { Task GetAllActiveWorkshopsNew(string year, string month); AllReport GetAllActiveWorkshops(string year, string month); - WorkshopResult GetWorkshopContractDone(string year, string month, long accountId, List workshopList); - WorkshopResult GetWorkshopContractSignDone(string year, string month, long accountId, List workshopList); - WorkshopResult GetWorkshopCheckoutDone(string year, string month, long accountId, List workshopList); - WorkshopResult GetWorkshopCheckoutSignDone(string year, string month, long accountId, List workshopList); - List GetEmployeeContract(string year, string month, long workshopId); - List GetEmployeeContractSign(string year, string month, long workshopId); - List GetEmployeeCheckout(string year, string month, long workshopId); - List GetEmployeeCheckoutSign(string year, string month, long workshopId); - PrintAllContractCheckout GetPrintAllContractDone(string year, string month, long accountId, + Task GetWorkshopContractDone(string year, string month, long accountId, List workshopList); + Task GetWorkshopContractSignDone(string year, string month, long accountId, List workshopList); - PrintAllContractCheckout GetPrintAllContractSignDone(string year, string month, long accountId, + Task GetWorkshopCheckoutDone(string year, string month, long accountId, List workshopList); + Task GetWorkshopCheckoutSignDone(string year, string month, long accountId, List workshopList); - PrintAllContractCheckout GetPrintAllCheckoutDone(string year, string month, long accountId, + Task> GetEmployeeContract(string year, string month, long workshopId); + Task> GetEmployeeContractSign(string year, string month, long workshopId); + Task> GetEmployeeCheckout(string year, string month, long workshopId); + Task> GetEmployeeCheckoutSign(string year, string month, long workshopId); + Task GetPrintAllContractDone(string year, string month, long accountId, List workshopList); - PrintAllContractCheckout GetPrintAllCheckoutSignDone(string year, string month, long accountId, + Task GetPrintAllContractSignDone(string year, string month, long accountId, + List workshopList); + Task GetPrintAllCheckoutDone(string year, string month, long accountId, + List workshopList); + Task GetPrintAllCheckoutSignDone(string year, string month, long accountId, List workshopList); diff --git a/CompanyManagment.App.Contracts/Report/AllReport.cs b/CompanyManagment.App.Contracts/Report/AllReport.cs index 31ad2a8d..108f3c47 100644 --- a/CompanyManagment.App.Contracts/Report/AllReport.cs +++ b/CompanyManagment.App.Contracts/Report/AllReport.cs @@ -27,6 +27,8 @@ namespace CompanyManagment.App.Contracts.Report public int ContractSignNotDone { get; set; } public int ContractSignDone { get; set; } + public int ContractSignToBe { get; set; } + //تصفیه public int AllCheckout { get; set; } public int CheckoutNotDone { get; set; } @@ -34,6 +36,8 @@ namespace CompanyManagment.App.Contracts.Report public int CheckoutSignNotDone { get; set; } public int CheckoutSignDone { get; set; } + public int CheckoutSignToBe { get; set; } + } diff --git a/CompanyManagment.App.Contracts/Report/IReportApplication.cs b/CompanyManagment.App.Contracts/Report/IReportApplication.cs index 754371fe..5fb8ff10 100644 --- a/CompanyManagment.App.Contracts/Report/IReportApplication.cs +++ b/CompanyManagment.App.Contracts/Report/IReportApplication.cs @@ -10,21 +10,23 @@ namespace CompanyManagment.App.Contracts.Report { Task GetAllActiveWorkshops(string year, string month); Task GetAllReports(string year, string month); - WorkshopResult GetWorkshopContractDone(string year, string month, long accountId, List workshopList); - WorkshopResult GetWorkshopContractSignDone(string year, string month, long accountId, List workshopList); - WorkshopResult GetWorkshopCheckoutDone(string year, string month, long accountId, List workshopList); - WorkshopResult GetWorkshopCheckoutSignDone(string year, string month, long accountId, List workshopList); - List GetEmployeeContract(string year, string month, long workshopId); - List GetEmployeeContractSign(string year, string month, long workshopId); - List GetEmployeeCheckout(string year, string month, long workshopId); - List GetEmployeeCheckoutSign(string year, string month, long workshopId); - PrintAllContractCheckout GetPrintAllContractDone(string year, string month, long accountId, + Task GetWorkshopContractDone(string year, string month, long accountId, List workshopList); + Task GetWorkshopContractSignDone(string year, string month, long accountId, List workshopList); - PrintAllContractCheckout GetPrintAllContractSignDone(string year, string month, long accountId, + Task GetWorkshopCheckoutDone(string year, string month, long accountId, List workshopList); + Task GetWorkshopCheckoutSignDone(string year, string month, long accountId, List workshopList); - PrintAllContractCheckout GetPrintAllCheckoutDone(string year, string month, long accountId, + Task> GetEmployeeContract(string year, string month, long workshopId); + Task> GetEmployeeContractSign(string year, string month, long workshopId); + Task> GetEmployeeCheckout(string year, string month, long workshopId); + Task> GetEmployeeCheckoutSign(string year, string month, long workshopId); + Task GetPrintAllContractDone(string year, string month, long accountId, List workshopList); - PrintAllContractCheckout GetPrintAllCheckoutSignDone(string year, string month, long accountId, + Task GetPrintAllContractSignDone(string year, string month, long accountId, + List workshopList); + Task GetPrintAllCheckoutDone(string year, string month, long accountId, + List workshopList); + Task GetPrintAllCheckoutSignDone(string year, string month, long accountId, List workshopList); } } diff --git a/CompanyManagment.Application/ReportApplication.cs b/CompanyManagment.Application/ReportApplication.cs index 9940deeb..10730ccb 100644 --- a/CompanyManagment.Application/ReportApplication.cs +++ b/CompanyManagment.Application/ReportApplication.cs @@ -29,67 +29,67 @@ public class ReportApplication : IReportApplication return await _reportRepository.GetAllActiveWorkshopsNew(year, month); } - public WorkshopResult GetWorkshopContractDone(string year, string month, long accountId, List workshopList) + public async Task GetWorkshopContractDone(string year, string month, long accountId, List workshopList) { - return _reportRepository.GetWorkshopContractDone(year, month, accountId, workshopList); + return await _reportRepository.GetWorkshopContractDone(year, month, accountId, workshopList); } - public WorkshopResult GetWorkshopContractSignDone(string year, string month, long accountId, List workshopList) + public async Task GetWorkshopContractSignDone(string year, string month, long accountId, List workshopList) { - return _reportRepository.GetWorkshopContractSignDone(year, month, accountId, workshopList); + return await _reportRepository.GetWorkshopContractSignDone(year, month, accountId, workshopList); } - public WorkshopResult GetWorkshopCheckoutDone(string year, string month, long accountId, List workshopList) + public async Task GetWorkshopCheckoutDone(string year, string month, long accountId, List workshopList) { - return _reportRepository.GetWorkshopCheckoutDone(year, month, accountId, workshopList); + return await _reportRepository.GetWorkshopCheckoutDone(year, month, accountId, workshopList); } - public WorkshopResult GetWorkshopCheckoutSignDone(string year, string month, long accountId, List workshopList) + public async Task GetWorkshopCheckoutSignDone(string year, string month, long accountId, List workshopList) { - return _reportRepository.GetWorkshopCheckoutSignDone(year, month, accountId, workshopList); + return await _reportRepository.GetWorkshopCheckoutSignDone(year, month, accountId, workshopList); } - public List GetEmployeeContract(string year, string month, long workshopId) + public async Task> GetEmployeeContract(string year, string month, long workshopId) { - return _reportRepository.GetEmployeeContract(year, month, workshopId); + return await _reportRepository.GetEmployeeContract(year, month, workshopId); } - public List GetEmployeeContractSign(string year, string month, long workshopId) + public async Task> GetEmployeeContractSign(string year, string month, long workshopId) { - return _reportRepository.GetEmployeeContractSign(year, month, workshopId); + return await _reportRepository.GetEmployeeContractSign(year, month, workshopId); } - public List GetEmployeeCheckout(string year, string month, long workshopId) + public async Task> GetEmployeeCheckout(string year, string month, long workshopId) { - return _reportRepository.GetEmployeeCheckout(year, month, workshopId); + return await _reportRepository.GetEmployeeCheckout(year, month, workshopId); } - public List GetEmployeeCheckoutSign(string year, string month, long workshopId) + public async Task> GetEmployeeCheckoutSign(string year, string month, long workshopId) { - return _reportRepository.GetEmployeeCheckoutSign(year, month, workshopId); + return await _reportRepository.GetEmployeeCheckoutSign(year, month, workshopId); } #region Print - public PrintAllContractCheckout GetPrintAllContractDone(string year, string month, long accountId, + public async Task GetPrintAllContractDone(string year, string month, long accountId, List workshopList) { - return _reportRepository.GetPrintAllContractDone(year, month, accountId, workshopList); + return await _reportRepository.GetPrintAllContractDone(year, month, accountId, workshopList); } - public PrintAllContractCheckout GetPrintAllContractSignDone(string year, string month, long accountId, + public async Task GetPrintAllContractSignDone(string year, string month, long accountId, List workshopList) { - return _reportRepository.GetPrintAllContractSignDone(year, month, accountId, workshopList); + return await _reportRepository.GetPrintAllContractSignDone(year, month, accountId, workshopList); } - public PrintAllContractCheckout GetPrintAllCheckoutDone(string year, string month, long accountId, + public async Task GetPrintAllCheckoutDone(string year, string month, long accountId, List workshopList) { - return _reportRepository.GetPrintAllCheckoutDone(year, month, accountId, workshopList); + return await _reportRepository.GetPrintAllCheckoutDone(year, month, accountId, workshopList); } - public PrintAllContractCheckout GetPrintAllCheckoutSignDone(string year, string month, long accountId, + public async Task GetPrintAllCheckoutSignDone(string year, string month, long accountId, List workshopList) { - return _reportRepository.GetPrintAllCheckoutSignDone(year, month, accountId, workshopList); + return await _reportRepository.GetPrintAllCheckoutSignDone(year, month, accountId, workshopList); } #endregion diff --git a/CompanyManagment.EFCore/Repository/ReportRepository.cs b/CompanyManagment.EFCore/Repository/ReportRepository.cs index 83e41372..c187017c 100644 --- a/CompanyManagment.EFCore/Repository/ReportRepository.cs +++ b/CompanyManagment.EFCore/Repository/ReportRepository.cs @@ -5,6 +5,7 @@ using System.Text.RegularExpressions; using System.Threading.Tasks; using _0_Framework.Application; using AccountMangement.Infrastructure.EFCore; +using Company.Domain.EmployeeAgg; using Company.Domain.ReportAgg; using Company.Domain.WorkshopEmployerAgg; using CompanyManagment.App.Contracts.LeftWork; @@ -254,9 +255,10 @@ public class ReportRepository : IReportRepository //} - public Task GetAllActiveWorkshopsNew(string year, string month) + public async Task GetAllActiveWorkshopsNew(string year, string month) { var watch = System.Diagnostics.Stopwatch.StartNew(); + var watchAllProssec = System.Diagnostics.Stopwatch.StartNew(); //یافتن آغاز و پایان ماه جاری //یافتن آغاز و پایان ماه بعد #region FindMonthStartAndEnd @@ -288,100 +290,172 @@ public class ReportRepository : IReportRepository #endregion Console.ForegroundColor = ConsoleColor.Yellow; - Console.WriteLine("========================== 1403/12/01 - 1403/12/30 =========================="); - - //var allLeft = _context.LeftWorkList + var byWorkshopDisabledCheck = await _context.Workshops.Select(x => new { x.id, x.CreateContract, x.SignContract, x.CreateCheckout, x.SignCheckout }).ToListAsync(); + var byEmployeeDisabledCheck = await _context.EmployeeComputeOptionsSet + .Select(x => new { x.EmployeeId, x.WorkshopId, x.CreateContract, x.SignContract, x.CreateCheckout, x.SignCheckout }).ToListAsync(); #region checkout //یاتن اکانتهای قراداد ساده - var checkoutAccountLeftWorks = _accountContext.AccountLeftWorks + var checkoutAccountLeftWorks = await _accountContext.AccountLeftWorks.AsSplitQuery() .Where(x => x.RoleId == 5) - .Where(x => x.StartWorkGr < currentMonthEnd && x.LeftWorkGr > currentMonthStart); + .Where(x => x.StartWorkGr < currentMonthEnd && x.LeftWorkGr > currentMonthStart).ToListAsync(); var allCheckoutAccountLeftWorkWorkshopIds = checkoutAccountLeftWorks.Select(x => x.WorkshopId).ToList(); //یافتن کارگاه هایی که فعال هستند و طرف حساب انها فعال است - var checkoutWorkshopEmployer = _context.WorkshopEmployers + var checkoutWorkshopEmployer =await _context.WorkshopEmployers.AsSplitQuery() .Where(x => allCheckoutAccountLeftWorkWorkshopIds.Contains(x.WorkshopId)) - .Include(x => x.Workshop) + .Include(x => x.Workshop).AsSplitQuery() .Include(x => x.Employer) .ThenInclude(x => x.ContractingParty) .Where(x => x.Employer.ContractingParty.IsBlock != "true" && x.Employer.ContractingParty.IsActiveString == "true") - .Where(x => x.Workshop.IsActiveString == "true"); + .Where(x => x.Workshop.IsActiveString == "true").ToListAsync(); + Console.WriteLine("checkoutWorkshopEmployer --->" + watch.Elapsed); + watch.Stop(); + watch.Restart(); //یافتن کارگاه های استثنا بدون قردادمالی var checkoutWithOutInstitutionContract = checkoutWorkshopEmployer.Where(x => x.Employer.ContractingPartyId == 30428) .GroupBy(x => x.Workshop).Select(x => x.Key.id); - //یافتن قردادمالی برای کارگاه های یافت شده در تاریخ مورد نظر - var checkoutFindHasInstitutionContract = _context.InstitutionContractSet - .Where(c => c.ContractStartGr <= currentMonthStart && c.ContractEndGr >= currentMonthEnd) - .Select(c => c.ContractingPartyId); + Console.WriteLine("checkoutWithOutInstitutionContract --->" + watch.Elapsed); + watch.Stop(); + watch.Restart(); + //یافتن قردادمالی برای کارگاه های یافت شده در تاریخ مورد نظر + var checkoutFindHasInstitutionContract =await _context.InstitutionContractSet.AsSplitQuery() + .Where(c => c.ContractStartGr <= currentMonthStart && c.ContractEndGr >= currentMonthEnd) + .Select(c => c.ContractingPartyId).ToListAsync(); + + Console.WriteLine("checkoutFindHasInstitutionContract --->" + watch.Elapsed); + watch.Stop(); + watch.Restart(); //فیلتر کارگاه های غیر استثنا با کمک کوئری بالا var checkoutWithInstitutionContract = checkoutWorkshopEmployer.Where(x => x.Employer.ContractingPartyId != 30428 && checkoutFindHasInstitutionContract.Contains(x.Employer.ContractingPartyId)).GroupBy(x => x.WorkshopId).Select(x => x.Key); + Console.WriteLine("checkoutWithInstitutionContract --->" + watch.Elapsed); + watch.Stop(); + watch.Restart(); //ترکیب کارگاه های استثنا و دارای قراداد var checkoutMixWitAndWitOut = checkoutWithInstitutionContract.Concat(checkoutWithOutInstitutionContract); - + Console.WriteLine("Concat --->" + watch.Elapsed); + watch.Stop(); + watch.Restart(); //تمام پرسنل فعال برای تصفیه حساب در ماه مورد نظر - var allCheckoutLeftworks = _context.LeftWorkList + var allCheckoutLeftworkList =await _context.LeftWorkList.AsSplitQuery() .Where(x => checkoutMixWitAndWitOut.Contains(x.WorkshopId)) .Where(x => - x.StartWorkDate <= currentMonthEnd && x.LeftWorkDate > currentMonthStart); + x.StartWorkDate <= currentMonthEnd && x.LeftWorkDate > currentMonthStart).Select(x=> new { x.EmployeeId, x.WorkshopId}).ToListAsync(); + Console.WriteLine("allCheckoutLeftworks --->" + watch.Elapsed); + watch.Stop(); + watch.Restart(); + + #region CreateCheckoutOptions + + + var allCheckoutLeftworks = new List<(long EmployeeId, long WorkshopId)>(); + foreach (var item in allCheckoutLeftworkList) + { + var toBeRemoveByEmployee = + byEmployeeDisabledCheck.FirstOrDefault(x => x.EmployeeId == item.EmployeeId && x.WorkshopId == item.WorkshopId); + var toBeRemoveByWorkshop = byWorkshopDisabledCheck.FirstOrDefault(x => x.id == item.WorkshopId); + + if (toBeRemoveByEmployee != null) + { + if (toBeRemoveByEmployee.CreateCheckout) + { + var add = (item.EmployeeId, item.WorkshopId); + allCheckoutLeftworks.Add(add); + } + } + else + { + if (toBeRemoveByWorkshop.CreateCheckout) + { + var add = (item.EmployeeId, item.WorkshopId); + allCheckoutLeftworks.Add(add); + } + } + + } + #endregion var allCheckoutLeftworkEmployeeIds = allCheckoutLeftworks.Select(x => x.EmployeeId); var allCheckoutLeftworkWorkshopIds = allCheckoutLeftworks.Select(x => x.WorkshopId).ToList(); + Console.WriteLine("allCheckoutLeftworkWorkshopIds --->" + watch.Elapsed); + watch.Stop(); + watch.Restart(); - var allCheckoutToBeTople = allCheckoutLeftworks.Select(x => new { x.EmployeeId, x.WorkshopId }).ToList(); + var allCheckoutToBeTople = allCheckoutLeftworks; //تمام تصفیه حساب های ایجاد شده ماه مورد نظر - var allCheckoutCreated = _context.CheckoutSet - .Where(x => allCheckoutLeftworkEmployeeIds.Contains(x.EmployeeId) && allCheckoutLeftworkWorkshopIds.Contains(x.WorkshopId)) - .Where(x => - x.ContractStart.Date >= currentMonthStart.Date && x.ContractEnd.Date <= currentMonthEnd.Date && x.IsActiveString == "true"); + //var allCheckoutCreated =await _context.CheckoutSet.AsSplitQuery() + // .Where(x => allCheckoutLeftworkEmployeeIds.Contains(x.EmployeeId) && allCheckoutLeftworkWorkshopIds.Contains(x.WorkshopId)) + // .Where(x => + // x.ContractStart.Date >= currentMonthStart.Date && x.ContractEnd.Date <= currentMonthEnd.Date && x.IsActiveString == "true").ToListAsync(); + Console.WriteLine("allCheckout Created start --->" + watch.Elapsed); + watch.Stop(); + watch.Restart(); + var allCheckoutCreated = await _context.CheckoutSet + .Where(x => + allCheckoutLeftworkWorkshopIds.Contains(x.WorkshopId) + && x.ContractStart >= currentMonthStart + && x.ContractEnd <= currentMonthEnd + && x.IsActiveString == "true") + .Select(x => new { x.id, x.EmployeeId, x.WorkshopId, x.Signature }) // فقط لازم‌ها + .ToListAsync(); + allCheckoutCreated = allCheckoutCreated.Where(x => allCheckoutLeftworkEmployeeIds.Contains(x.EmployeeId)) + .ToList(); + + Console.WriteLine("allCheckout Created End --->" + watch.Elapsed); + watch.Stop(); + watch.Restart(); var allChekoutCreated = allCheckoutCreated.Select(x => x.WorkshopId).ToList(); - //تصفیه حساب هایی که امضاء شده - var allCheckoutSigned = allCheckoutCreated.Count(x => x.Signature == "1"); - var allCheckoutSignedList = allCheckoutCreated.Where(x => x.Signature == "1").Select(x => x.WorkshopId).ToList(); + + + Console.WriteLine("allCheckoutSignedList --->" + watch.Elapsed); + watch.Stop(); + watch.Restart(); #endregion #region Contracts //یاتن اکانتهای قراداد ساده - var contractsAccountLeftWorks = _accountContext.AccountLeftWorks + var contractsAccountLeftWorks =await _accountContext.AccountLeftWorks.AsSplitQuery() .Where(x => x.RoleId == 5) - .Where(x => x.StartWorkGr < nextMonthEnd && x.LeftWorkGr > nextMonthStart); + .Where(x => x.StartWorkGr < nextMonthEnd && x.LeftWorkGr > nextMonthStart).ToListAsync(); var allContractAccountLeftWorkWorkshopIds = contractsAccountLeftWorks.Select(x => x.WorkshopId).ToList(); //#if DEBUG // contractsAccountLeftWorks = contractsAccountLeftWorks.Where(x => x.AccountId == 25); // allContractAccountLeftWorkWorkshopIds = allContractAccountLeftWorkWorkshopIds.Where(x=>x == 296).ToList(); //#endif - + //یافتن کارگاه هایی که فعال هستند و طرف حساب انها فعال است - var contractWorkshopEmployer = _context.WorkshopEmployers + var contractWorkshopEmployer =await _context.WorkshopEmployers.AsSplitQuery() .Where(x => allContractAccountLeftWorkWorkshopIds.Contains(x.WorkshopId)) .Include(x => x.Workshop) .Include(x => x.Employer) .ThenInclude(x => x.ContractingParty) .Where(x => x.Employer.ContractingParty.IsBlock != "true" && x.Employer.ContractingParty.IsActiveString == "true") - .Where(x => x.Workshop.IsActiveString == "true"); - + .Where(x => x.Workshop.IsActiveString == "true").ToListAsync(); + Console.WriteLine("contractWorkshopEmployer --->" + watch.Elapsed); + watch.Stop(); + watch.Restart(); //یافتن کارگاه های استثنا بدون قردادمالی var contractWithOutInstitutionContract = contractWorkshopEmployer.Where(x => x.Employer.ContractingPartyId == 30428) .GroupBy(x => x.Workshop).Select(x => x.Key.id).ToList(); //یافتن قردادمالی برای کارگاه های یافت شده در تاریخ مورد نظر - var contractFindHasInstitutionContract = _context.InstitutionContractSet + var contractFindHasInstitutionContract =await _context.InstitutionContractSet.AsSplitQuery() .Where(c => c.ContractStartGr <= nextMonthStart && c.ContractEndGr >= nextMonthEnd) - .Select(c => c.ContractingPartyId); + .Select(c => c.ContractingPartyId).ToListAsync(); //فیلتر کارگاه های غیر استثنا با کمک کوئری بالا var contractWithInstitutionContract = contractWorkshopEmployer.Where(x => x.Employer.ContractingPartyId != 30428 && contractFindHasInstitutionContract @@ -394,31 +468,176 @@ public class ReportRepository : IReportRepository //تمام پرسنل فعال برای قراداد در ماه مورد نظر - var allContractLeftworks = _context.LeftWorkList + var allContractLeftworksList =await _context.LeftWorkList.AsSplitQuery() .Where(x => contractMixWitAndWitOut.Contains(x.WorkshopId)) .Where(x => - x.StartWorkDate <= nextMonthEnd && x.LeftWorkDate > nextMonthStart); + x.StartWorkDate <= nextMonthEnd && x.LeftWorkDate > nextMonthStart).Select(x=> new {x.EmployeeId, x.WorkshopId}).ToListAsync(); + + #region CreateContractOptions + + + var allContractLeftworks = new List<(long EmployeeId, long WorkshopId)>(); + foreach (var item in allContractLeftworksList) + { + var toBeRemoveByEmployee = + byEmployeeDisabledCheck.FirstOrDefault(x => x.EmployeeId == item.EmployeeId && x.WorkshopId == item.WorkshopId); + var toBeRemoveByWorkshop = byWorkshopDisabledCheck.FirstOrDefault(x => x.id == item.WorkshopId); + + if (toBeRemoveByEmployee != null) + { + if (toBeRemoveByEmployee.CreateContract) + { + var add = (item.EmployeeId, item.WorkshopId); + allContractLeftworks.Add(add); + } + } + else + { + if (toBeRemoveByWorkshop.CreateContract) + { + var add = (item.EmployeeId, item.WorkshopId); + allContractLeftworks.Add(add); + } + } + + } + #endregion //تمام قرارداد های ایجاد شده ماه مورد نظر var allContractLeftworkEmployeeIds = allContractLeftworks.Select(x => x.EmployeeId); - var allContracToBeTople = allContractLeftworks.Select(x => new { x.EmployeeId, x.WorkshopId }).ToList(); + var allContracToBeTople = allContractLeftworks; var allContractLeftworkWorkshopIds = allContractLeftworks.Select(x => x.WorkshopId).ToList(); - var allContractCreated = _context.Contracts - .Where(x => allContractLeftworkEmployeeIds.Contains(x.EmployeeId) && allContractLeftworkWorkshopIds.Contains(x.WorkshopIds)) - .Where(x => - x.ContarctStart.Date <= nextMonthEnd.Date && x.ContractEnd.Date > nextMonthStart.Date && x.IsActiveString == "true"); - var allContractCreatedlist = allContractCreated.Select(x => x.WorkshopIds).ToList(); - //قرارداد هایی که امضاء شده - var allContractSigned = allContractCreated.Count(x => x.Signature == "1"); - var allContractSignedList = allContractCreated.Where(x => x.Signature == "1").Select(x => x.WorkshopIds).ToList(); + //var allContractCreated =await _context.Contracts.AsSplitQuery() + // .Where(x => allContractLeftworkEmployeeIds.Contains(x.EmployeeId) && allContractLeftworkWorkshopIds.Contains(x.WorkshopIds)) + // .Where(x => + // x.ContarctStart.Date <= nextMonthEnd.Date && x.ContractEnd.Date > nextMonthStart.Date && x.IsActiveString == "true").ToListAsync(); + + Console.WriteLine("allContractCreated start --->" + watch.Elapsed); + watch.Stop(); + watch.Restart(); + var allContractCreated = await _context.Contracts + .Where(x => + allContractLeftworkWorkshopIds.Contains(x.WorkshopIds) + && x.ContarctStart <= nextMonthEnd + && x.ContractEnd > nextMonthStart + && x.IsActiveString == "true") + .Select(x => new { x.id, x.EmployeeId, x.WorkshopIds, x.Signature }) // فقط لازم‌ها + .ToListAsync(); + allContractCreated = allContractCreated.Where(x => allContractLeftworkEmployeeIds.Contains(x.EmployeeId)) + .ToList(); + + + Console.WriteLine("allContractCreated end --->" + watch.Elapsed); + watch.Stop(); + watch.Restart(); + var allContractCreatedlist = allContractCreated.Select(x => x.WorkshopIds).ToList(); + - #endregion //قرارداد هایی که باید ایجاد می شد var contractToBe = allContractLeftworks.Count(); //قراردادهای ایجاد شده var createdContracts = allContractCreated.Count(); + + Console.WriteLine("contractsToBe : " + allContractLeftworks.Count()); + Console.WriteLine("contracts created: " + allContractCreated.Count()); + #region signContractOptions + + var allContractSignedCounter = 0; + var allContractSignedListWorkshopId = new List(); + var contractSignToBe = 0; + var allContractSignToBeListWorkshopId = new List(); + foreach (var item in allContractCreated) + { + var byEmployee = + byEmployeeDisabledCheck.FirstOrDefault(x => x.EmployeeId == item.EmployeeId && x.WorkshopId == item.WorkshopIds); + var byWorkshop = byWorkshopDisabledCheck.FirstOrDefault(x => x.id == item.WorkshopIds); + if (byEmployee != null) + { + if (byEmployee.SignContract) + { + contractSignToBe += 1; + allContractSignToBeListWorkshopId.Add(item.WorkshopIds); + if (item.Signature == "1") + { + allContractSignedCounter += 1; + allContractSignedListWorkshopId.Add(item.WorkshopIds); + } + } + + + } + else + { + if (byWorkshop.SignContract) + { + contractSignToBe += 1; + allContractSignToBeListWorkshopId.Add(item.WorkshopIds); + if (item.Signature == "1") + { + allContractSignedCounter += 1; + allContractSignedListWorkshopId.Add(item.WorkshopIds); + } + } + } + + + } + #endregion + + #region signCheckoutOptions + + var allCheckoutSignedCounter = 0; + var allCheckoutSignedListWorkshopId = new List(); + var checkoutSignToBe = 0; + var allCheckoutSignToBeListWorkshopId = new List(); + foreach (var item in allCheckoutCreated) + { + var byEmployee = + byEmployeeDisabledCheck.FirstOrDefault(x => x.EmployeeId == item.EmployeeId && x.WorkshopId == item.WorkshopId); + var byWorkshop = byWorkshopDisabledCheck.FirstOrDefault(x => x.id == item.WorkshopId); + if (byEmployee != null) + { + if (byEmployee.SignCheckout) + { + checkoutSignToBe += 1; + allCheckoutSignToBeListWorkshopId.Add(item.WorkshopId); + if (item.Signature == "1") + { + allCheckoutSignedCounter += 1; + allCheckoutSignedListWorkshopId.Add(item.WorkshopId); + } + } + + + } + else + { + if (byWorkshop.SignCheckout) + { + checkoutSignToBe += 1; + allCheckoutSignToBeListWorkshopId.Add(item.WorkshopId); + if (item.Signature == "1") + { + allCheckoutSignedCounter += 1; + allCheckoutSignedListWorkshopId.Add(item.WorkshopId); + } + } + } + + + } + #endregion + #endregion + + //تصفیه حساب هایی که امضاء شده + var allCheckoutSigned = allCheckoutSignedCounter; + var allCheckoutSignedList = allCheckoutSignedListWorkshopId; + + //قرارداد هایی که امضاء شده + var allContractSigned = allContractSignedCounter; + var allContractSignedList = allContractSignedListWorkshopId; // قراداد های امضاء شده var signedContracts = allContractSigned; @@ -429,20 +648,19 @@ public class ReportRepository : IReportRepository // تصفیه های ایجاد شده var createdCheckouts = allCheckoutCreated.Count(); //تصفیه های امضاء شده - var signedChckouts = allCheckoutSigned; + var signedChckouts = allCheckoutSignedCounter; - Console.WriteLine("contractsToBe : " + allContractLeftworks.Count()); - Console.WriteLine("contracts created: " + allContractCreated.Count()); + Console.WriteLine("contracts signed: " + allContractSigned); Console.WriteLine("checkoutsToBe : " + allCheckoutLeftworks.Count()); Console.WriteLine("checkouts created: " + allCheckoutCreated.Count()); - Console.WriteLine("checkouts signed: " + allCheckoutSigned); + Console.WriteLine("checkouts signed: " + allCheckoutSignedCounter); - var accounts = _accountContext.Accounts.Where(x => x.RoleId == 5); + var accounts = await _accountContext.Accounts.Where(x => x.RoleId == 5).ToListAsync(); @@ -464,11 +682,11 @@ public class ReportRepository : IReportRepository var checkoutAccountGroupresult = checkoutAccountGroup.Select(grouped => { - var toBe = allCheckoutToBeTople.Where(n => grouped.WorkshopList.Contains(n.WorkshopId)).GroupBy(n => n.EmployeeId).Select(n => n.Key).ToList(); + var toBe = allCheckoutLeftworkWorkshopIds.Where(n => grouped.WorkshopList.Contains(n)).ToList(); int checkoutToBe = toBe.Count; - //int checkoutToBe = allCheckoutLeftworkWorkshopIds.Count(n => grouped.WorkshopList.Contains(n)); - int createdCheckouts = allChekoutCreated.Count(n => grouped.WorkshopList.Contains(n)); - int signedCheckout = allCheckoutSignedList.Count(n => grouped.WorkshopList.Contains(n)); + int createdCheckouts = allContractCreatedlist.Count(n => grouped.WorkshopList.Contains(n)); + int signedCheckout = allCheckoutSignedListWorkshopId.Count(n => grouped.WorkshopList.Contains(n)); + int signToBeCheckout = allCheckoutSignToBeListWorkshopId.Count(n => grouped.WorkshopList.Contains(n)); if (checkoutToBe > 0) { @@ -478,7 +696,7 @@ public class ReportRepository : IReportRepository AccountId = grouped.AccountId, AccountFullName = grouped.AccountFullName, CheckoutDonePercent = (createdCheckouts * 100) / checkoutToBe, - CheckoutSignPercent = createdCheckouts > 0 ? (signedCheckout * 100) / createdCheckouts : 0, + CheckoutSignPercent = signToBeCheckout > 0 ? (signedCheckout * 100) / signToBeCheckout : 0, }; } else @@ -508,10 +726,12 @@ public class ReportRepository : IReportRepository var contractAccountGroupResult = contractAccountGroup.Select(grouped => { - var toBe = allContracToBeTople.Where(n => grouped.WorkshopList.Contains(n.WorkshopId)).GroupBy(n => n.EmployeeId).Select(n => n.Key).ToList(); + var toBe = allContractLeftworkWorkshopIds.Where(n => grouped.WorkshopList.Contains(n)).ToList(); + //var toBe = grouped.WorkshopList.Where(n => allContractLeftworkWorkshopIds.Contains(n)).ToList(); int contractToBe = toBe.Count; int createdContracts = allContractCreatedlist.Count(n => grouped.WorkshopList.Contains(n)); int signedContracts = allContractSignedList.Count(n => grouped.WorkshopList.Contains(n)); + int signToBeContract = allContractSignToBeListWorkshopId.Count(n => grouped.WorkshopList.Contains(n)); if (contractToBe > 0) { return new AccountResults() @@ -520,7 +740,7 @@ public class ReportRepository : IReportRepository AccountId = grouped.AccountId, AccountFullName = grouped.AccountFullName, ContractDonePercent = (createdContracts * 100) / contractToBe, - ContractSignPercent = createdContracts > 0 ? (signedContracts * 100) / createdContracts : 0, + ContractSignPercent = signToBeContract > 0 ? (signedContracts * 100) / signToBeContract : 0, }; } else @@ -543,11 +763,11 @@ public class ReportRepository : IReportRepository //قرارداد var contractPercent = contractToBe > 0 ? (createdContracts * 100) / contractToBe : 0; //امضاء قراداد - var contractSignaturePercent = createdContracts > 0 ? (signedContracts * 100) / createdContracts : 0; + var contractSignaturePercent = contractSignToBe > 0 ? (signedContracts * 100) / contractSignToBe : 0; // تصفیه var checkoutPercent = (createdCheckouts * 100) / checkoutToBe; // امضاء تصفیه حساب - var checkoutSignaturePercent = createdCheckouts > 0 ? (signedChckouts * 100) / createdCheckouts : 0; + var checkoutSignaturePercent = checkoutSignToBe > 0 ? (signedChckouts * 100) / checkoutSignToBe : 0; var finalResult = new AllReport() { //همه @@ -569,20 +789,23 @@ public class ReportRepository : IReportRepository AllContract = contractToBe, ContractNotDone = contractToBe - createdContracts, ContrcatDone = createdContracts, - ContractSignNotDone = createdContracts - signedContracts, + ContractSignNotDone = contractSignToBe - signedContracts, ContractSignDone = signedContracts, - + ContractSignToBe = contractSignToBe, AllCheckout = checkoutToBe, CheckoutNotDone = checkoutToBe - createdCheckouts, CheckoutDone = createdCheckouts, CheckoutSignDone = signedChckouts, - CheckoutSignNotDone = createdCheckouts - signedChckouts, + CheckoutSignNotDone = checkoutSignToBe - signedChckouts, + CheckoutSignToBe = checkoutSignToBe, }; Console.WriteLine("new metod >>>>>: " + watch.Elapsed); - return Task.FromResult(finalResult); + Console.WriteLine("watchAllProssecd >>>>>: " + watchAllProssec.Elapsed); + + return finalResult; } public AllReport GetAllActiveWorkshops(string year, string month) @@ -856,7 +1079,7 @@ public class ReportRepository : IReportRepository } - public WorkshopResult GetWorkshopContractDone(string year, string month, long accountId, List workshopList) + public async Task GetWorkshopContractDone(string year, string month, long accountId, List workshopList) { var watch = System.Diagnostics.Stopwatch.StartNew(); string nowFa = ""; @@ -880,106 +1103,84 @@ public class ReportRepository : IReportRepository var nextMonthEnd = (($"{nextMonthStartFa}").FindeEndOfMonth()).ToGeorgianDateTime(); - - ////var instititionContracts = _context.InstitutionContractSet.Where(x => x.IsActiveString == "true").Select(x => x.ContractingPartyId).ToList(); - //var blockContractingPartyIds = _context.PersonalContractingParties.Where(x => x.IsBlock == "false" && x.IsActiveString == "true").Select(x => x.id).ToList(); - ////blockContractingPartyIds = blockContractingPartyIds.Where(x => instititionContracts.Contains(x)).ToList(); - //var workshops = _context.Workshops.Where(x => workshopList.Contains(x.id)) - // .Include(x => x.LeftWorks) - // .Select(x => new ActiveWorkshops - // { - // Id = x.id, - // IsActiveString = x.IsActiveString, - // WorkshopFullName = x.WorkshopFullName, - // ArchiveCode = x.ArchiveCode, - - - - // #region Contracts - - // //contractLeft This Mont - - // ContractLeftIds = x.LeftWorks.Where(l => - // l.StartWorkDate <= nextMonthEnd && l.LeftWorkDate > nextMonthStart).Select(l => l.id).ToList(), - // #endregion - - - - // }).AsSplitQuery(); - - //var workshopsList = workshops.Select(x => new ActiveWorkshops - //{ - // Id = x.Id, - // WorkshopFullName = x.WorkshopFullName, - // ArchiveCode = x.ArchiveCode, - // ContractingPartId = x.ContractingPartId, - // AccountIdList = x.AccountIdList, - // #region Contracts - - // //contractLeft This Month - // ContractLeftIds = _context.InstitutionContractSet.Any(c => c.ContractingPartyId == x.ContractingPartId && c.ContractStartGr <= nextMonthStart && c.ContractEndGr >= nextMonthEnd) ? x.ContractLeftIds : new List(), - - // #endregion - - - //}).ToList(); - - //var result = workshops.Select(x => new ActiveWorkshops - //{ - // Id = x.Id, - // ContractLeftWorkCount = x.ContractLeftIds.Count, - // ContractLeftIds = x.ContractLeftIds, - // WorkshopFullName = x.WorkshopFullName, - // ArchiveCode = x.ArchiveCode, - // ContrctDoneCount = x.ContractLeftIds.Count > 0 ? _context.Contracts.Count(c => x.ContractLeftIds.Contains(c.EmployerId) && - // c.ContarctStart.Date <= nextMonthEnd.Date && c.ContractEnd.Date > nextMonthStart.Date && c.IsActiveString == "true") : 0, - - - //}).Where(x => x.ContractLeftWorkCount > 0).ToList(); - #region NewChanges //تمام پرسنل فعال برای قراداد در ماه مورد نظر - var allContractLeftworks = _context.LeftWorkList + var allContractLeftworksList = await _context.LeftWorkList .Where(x => workshopList.Contains(x.WorkshopId)) .Where(x => - x.StartWorkDate <= nextMonthEnd && x.LeftWorkDate > nextMonthStart); + x.StartWorkDate <= nextMonthEnd && x.LeftWorkDate > nextMonthStart) + .Select(x=> new {x.EmployeeId, x.WorkshopId, x.EmployeeFullName}) + .ToListAsync(); + + //var allContractCreatedWorkshopIdList = allContractLeftworksList.Select(x => new { x.EmployeeId, x.WorkshopId }) + // .ToList(); + + + #region CreateContractOptions + + var byWorkshopDisabledCheck = await _context.Workshops.Where(x=> workshopList.Contains(x.id)).Select(x => new { x.id, x.CreateContract}).ToListAsync(); + var byEmployeeDisabledCheck = await _context.EmployeeComputeOptionsSet.Where(x => workshopList.Contains(x.WorkshopId)) + .Select(x => new { x.EmployeeId, x.WorkshopId, x.CreateContract }).ToListAsync(); + var allContractLeftworks = new List<(long EmployeeId, long WorkshopId, string EmployeeFullName)>(); + foreach (var item in allContractLeftworksList) + { + var toBeRemoveByEmployee = + byEmployeeDisabledCheck.FirstOrDefault(x => x.EmployeeId == item.EmployeeId && x.WorkshopId == item.WorkshopId); + var toBeRemoveByWorkshop = byWorkshopDisabledCheck.FirstOrDefault(x => x.id == item.WorkshopId); + + if (toBeRemoveByEmployee != null) + { + if (toBeRemoveByEmployee.CreateContract) + { + var add = (item.EmployeeId, item.WorkshopId, item.EmployeeFullName); + allContractLeftworks.Add(add); + } + } + else + { + if (toBeRemoveByWorkshop.CreateContract) + { + var add = (item.EmployeeId, item.WorkshopId,item.EmployeeFullName); + allContractLeftworks.Add(add); + } + } + + + + } var allContractLeftworksWorkshopIdList = allContractLeftworks.Select(x => x.WorkshopId).ToList(); var allContractLeftworkEmployeeIds = allContractLeftworks.Select(x => x.EmployeeId).ToList(); - var allContractLeftworkEmployeeIdsList = allContractLeftworks - .Select(x => new { x.EmployeeId, x.WorkshopId }) - .ToList(); //تمام قرارداد های ایجاد شده ماه مورد نظر - var allContractCreated = _context.Contracts - .Where(x => allContractLeftworkEmployeeIds.Contains(x.EmployeeId)) + var allContractCreated = await _context.Contracts + .Where(x => allContractLeftworkEmployeeIds.Contains(x.EmployeeId) && allContractLeftworksWorkshopIdList.Contains(x.WorkshopIds)) .Where(x => - x.ContarctStart.Date <= nextMonthEnd.Date && x.ContractEnd.Date > nextMonthStart.Date && x.IsActiveString == "true"); + x.ContarctStart <= nextMonthEnd && x.ContractEnd > nextMonthStart && x.IsActiveString == "true") + .Select(x=> new {x.id, x.EmployeeId, x.WorkshopIds, x.Signature}).ToListAsync(); - var allContractCreatedWorkshopIdList = allContractCreated.Select(x => new { x.EmployeeId, x.WorkshopIds }) - .ToList(); - - - //قرارداد هایی که امضاء شده - var allContractSigned = allContractCreated.Count(x => x.Signature == "1"); + #endregion + Console.WriteLine("ajax 1 >>>>>: " + watch.Elapsed); var workshops = _context.Workshops.Include(x => x.LeftWorks).Where(x => allContractLeftworksWorkshopIdList.Contains(x.id)).ToList(); var workshopListResult = workshops .Select(workshop => { - var toBe = workshop.LeftWorks.Where(x => + var toBe = workshop.LeftWorks + .Where(x=> allContractLeftworkEmployeeIds.Contains(x.EmployeeId)) + .Where(x => x.StartWorkDate <= nextMonthEnd && x.LeftWorkDate > nextMonthStart) .GroupBy(x => x.EmployeeId) .Select(x => x.Key).ToList(); var contractToBe = toBe.Count(); //var contractToBe = allContractLeftworkEmployeeIdsList.Count(x=> x.WorkshopId == workshop.id); - var contractCreated = allContractCreatedWorkshopIdList.Count(x => x.WorkshopIds == workshop.id); + var contractCreated = allContractCreated.Count(x => x.WorkshopIds == workshop.id); if (contractToBe > 0) { return new workshopSearch() @@ -1022,7 +1223,7 @@ public class ReportRepository : IReportRepository return finalResult; } - public WorkshopResult GetWorkshopContractSignDone(string year, string month, long accountId, + public async Task GetWorkshopContractSignDone(string year, string month, long accountId, List workshopList) { var watch = System.Diagnostics.Stopwatch.StartNew(); @@ -1047,128 +1248,52 @@ public class ReportRepository : IReportRepository var nextMonthEnd = (($"{nextMonthStartFa}").FindeEndOfMonth()).ToGeorgianDateTime(); - //var instititionContracts = _context.InstitutionContractSet.Where(x => x.IsActiveString == "true").Select(x => x.ContractingPartyId).ToList(); - //var blockContractingPartyIds = _context.PersonalContractingParties.Where(x => x.IsBlock == "false" && x.IsActiveString == "true").Select(x => x.id).ToList(); - ////blockContractingPartyIds = blockContractingPartyIds.Where(x => instititionContracts.Contains(x)).ToList(); - //var workshops = _context.Workshops.Where(x => x.IsActiveString == "true") - // .Include(x => x.WorkshopEmployers) - // .Include(x => x.LeftWorks) - // .Select(x => new ActiveWorkshops - // { - // Id = x.id, - // IsActiveString = x.IsActiveString, - // WorkshopFullName = x.WorkshopFullName, - // ArchiveCode = x.ArchiveCode, - // ContractingPartId = x.WorkshopEmployers.Select(e => e.Employer.ContractingPartyId).FirstOrDefault(), - // AccountIdList = _context.WorkshopAccounts.Where(m => m.WorkshopId == x.id).Select(a => a.AccountId).ToList(), - // #region Contracts - - // //contractLeft This Mont - - // ContractLeftIds = x.LeftWorks.Select(l => new LeftWorkViewModel() - // { - // EmployeeId = l.EmployeeId, - // StartWorkDateGr = l.StartWorkDate, - // LeftWorkDateGr = l.LeftWorkDate.AddDays(-1), - - // }).Where(l => - // (l.StartWorkDateGr <= nextMonthStart && l.LeftWorkDateGr > nextMonthStart) || - // (l.StartWorkDateGr <= nextMonthEnd && l.LeftWorkDateGr >= nextMonthEnd) || - // (l.StartWorkDateGr >= nextMonthStart && l.StartWorkDateGr <= nextMonthEnd) || - // (l.LeftWorkDateGr >= nextMonthStart && l.LeftWorkDateGr <= nextMonthEnd)).Select(l => l.EmployeeId).ToList(), - // #endregion - - - // }).Where(e => blockContractingPartyIds.Contains(e.ContractingPartId)) - // .Where(a => a.AccountIdList.Contains(accountId)).AsSplitQuery(); - //var workshopsList = workshops.Select(x => new ActiveWorkshops - //{ - // Id = x.Id, - // WorkshopFullName = x.WorkshopFullName, - // ArchiveCode = x.ArchiveCode, - // ContractingPartId = x.ContractingPartId, - // AccountIdList = x.AccountIdList, - // #region Contracts - - // //contractLeft This Month - // ContractLeftIds = _context.InstitutionContractSet.Any(c => c.ContractingPartyId == x.ContractingPartId && c.ContractStartGr <= nextMonthStart && c.ContractEndGr >= nextMonthEnd) ? x.ContractLeftIds : new List(), - - // #endregion - - - //}).ToList(); - - //var result = workshopsList.Select(x => new ActiveWorkshops - //{ - // Id = x.Id, - // ContractLeftWorkCount = x.ContractLeftIds.Count, - // WorkshopFullName = x.WorkshopFullName, - // ArchiveCode = x.ArchiveCode, - // ContrctDoneCount = x.ContractLeftIds.Count > 0 ? _context.Contracts.Where(ch => ch.WorkshopIds == x.Id && ch.IsActiveString == "true").Where(ch => x.ContractLeftIds.Contains(ch.EmployeeId)) - // .Count(l => (l.ContarctStart <= nextMonthStart && l.ContractEnd >= nextMonthStart) || - // (l.ContarctStart <= nextMonthEnd && l.ContractEnd >= nextMonthEnd) || - // (l.ContarctStart >= nextMonthStart && l.ContarctStart <= nextMonthEnd) || - // (l.ContractEnd >= nextMonthStart && l.ContractEnd <= nextMonthEnd)) : 0, - // ContrctSignDoneCount = x.ContractLeftIds.Count > 0 ?_context.Contracts.Where(ct => ct.WorkshopIds == x.Id && ct.IsActiveString == "true" && ct.Signature == "1").Where(ct => x.ContractLeftIds.Contains(ct.EmployeeId)) - // .Count(l => (l.ContarctStart <= nextMonthStart && l.ContractEnd >= nextMonthStart) || - // (l.ContarctStart <= nextMonthEnd && l.ContractEnd >= nextMonthEnd) || - // (l.ContarctStart >= nextMonthStart && l.ContarctStart <= nextMonthEnd) || - // (l.ContractEnd >= nextMonthStart && l.ContractEnd <= nextMonthEnd)) : 0, - - - //}).Where(x => x.ContrctDoneCount > 0).ToList(); - //var workshopList = result.Select(x => new workshopSearch() - //{ - // Id = x.Id, - // WorkshopFullName = x.WorkshopFullName, - // ArchiveCode = x.ArchiveCode, - - // ContractSignPercent = ((x.ContrctSignDoneCount * 100) / x.ContrctDoneCount), - - //}).OrderBy(x => x.ContractSignPercent).ToList(); - - //var badWorkshop = workshopList.FirstOrDefault(); - //var badWorkshopLeftWorks = _context.LeftWorkList.Where(l => l.WorkshopId == badWorkshop.Id).Select(l => new LeftWorkViewModel() - //{ - // Id = l.id, - // EmployeeId = l.EmployeeId, - // EmployeeFullName = l.EmployeeFullName, - // StartWorkDateGr = l.StartWorkDate, - // LeftWorkDateGr = l.LeftWorkDate, - - //}).Where(l => - // (l.StartWorkDateGr <= nextMonthStart && l.LeftWorkDateGr > nextMonthStart) || - // (l.StartWorkDateGr <= nextMonthEnd && l.LeftWorkDateGr >= nextMonthEnd) || - // (l.StartWorkDateGr >= nextMonthStart && l.StartWorkDateGr <= nextMonthEnd) || - // (l.LeftWorkDateGr >= nextMonthStart && l.LeftWorkDateGr <= nextMonthEnd)).ToList(); - //var badWorkshopContracts = _context.Contracts.Where(ct => ct.WorkshopIds == badWorkshop.Id && ct.IsActiveString == "true" && ct.Signature == "1") - // .Where(l => (l.ContarctStart <= nextMonthStart && l.ContractEnd >= nextMonthStart) || - // (l.ContarctStart <= nextMonthEnd && l.ContractEnd >= nextMonthEnd) || - // (l.ContarctStart >= nextMonthStart && l.ContarctStart <= nextMonthEnd) || - // (l.ContractEnd >= nextMonthStart && l.ContractEnd <= nextMonthEnd)).Select(x => x.EmployeeId).ToList(); - //var notDoneEmployes = badWorkshopLeftWorks.Select(l => new EmployeeNotDone() - //{ - // Id = l.EmployeeId, - // EmployeeFullName = l.EmployeeFullName, - - //}).Where(l => !badWorkshopContracts.Contains(l.Id)).ToList(); - - //var finalResult = new WorkshopResult() - //{ - // WorkshopSearches = workshopList, - // EmployeeNotDones = notDoneEmployes, - //}; - #region NewChanges //تمام پرسنل فعال برای قراداد در ماه مورد نظر - var allContractLeftworks = _context.LeftWorkList + var allContractLeftworksList = await _context.LeftWorkList .Where(x => workshopList.Contains(x.WorkshopId)) .Where(x => - x.StartWorkDate <= nextMonthEnd && x.LeftWorkDate > nextMonthStart); + x.StartWorkDate <= nextMonthEnd && x.LeftWorkDate > nextMonthStart) + .Select(x => new { x.EmployeeId, x.WorkshopId, x.EmployeeFullName , x.Employee}) + .ToListAsync(); + + + var byWorkshopDisabledCheck = await _context.Workshops.Select(x => new { x.id, x.CreateContract, x.SignContract}).ToListAsync(); + var byEmployeeDisabledCheck = await _context.EmployeeComputeOptionsSet + .Select(x => new { x.EmployeeId, x.WorkshopId, x.CreateContract, x.SignContract }).ToListAsync(); + var allContractLeftworks = new List<(long EmployeeId, long WorkshopId, string EmployeeFullName)>(); + foreach (var item in allContractLeftworksList) + { + var toBeRemoveByEmployee = + byEmployeeDisabledCheck.FirstOrDefault(x => x.EmployeeId == item.EmployeeId && x.WorkshopId == item.WorkshopId); + var toBeRemoveByWorkshop = byWorkshopDisabledCheck.FirstOrDefault(x => x.id == item.WorkshopId); + + if (toBeRemoveByEmployee != null) + { + if (toBeRemoveByEmployee.CreateContract) + { + var add = (item.EmployeeId, item.WorkshopId, item.EmployeeFullName); + allContractLeftworks.Add(add); + } + } + else + { + if (toBeRemoveByWorkshop.CreateContract) + { + var add = (item.EmployeeId, item.WorkshopId, item.EmployeeFullName); + allContractLeftworks.Add(add); + } + } + } + + + + + var allContractLeftworkEmployeeIds = allContractLeftworks.Select(x => x.EmployeeId).ToList(); @@ -1178,23 +1303,69 @@ public class ReportRepository : IReportRepository - var allContractCreated = _context.Contracts + var allContractCreated =await _context.Contracts .Where(x => allContractLeftworkEmployeeIds.Contains(x.EmployeeId)) .Where(x => - x.ContarctStart.Date <= nextMonthEnd.Date && x.ContractEnd.Date > nextMonthStart.Date && x.IsActiveString == "true"); + x.ContarctStart <= nextMonthEnd && x.ContractEnd > nextMonthStart && x.IsActiveString == "true") + .Select(x=> new {x.id, x.EmployeeId, x.WorkshopIds, x.Signature, x.Employee}).ToListAsync(); - var createdContractWorkshopids = allContractCreated.Select(x => x.WorkshopIds).ToList(); + + var allContractSignedListWorkshopId = new List<(long id, long EmployeeId, long WorkshopId, string Signature, Employee Employee)>(); + + var allContractSignToBeListWorkshopId = new List<(long id, long EmployeeId, long WorkshopId, string Signature, Employee Employee)>(); + + + foreach (var item in allContractCreated) + { + var byEmployee = + byEmployeeDisabledCheck.FirstOrDefault(x => x.EmployeeId == item.EmployeeId && x.WorkshopId == item.WorkshopIds); + var byWorkshop = byWorkshopDisabledCheck.FirstOrDefault(x => x.id == item.WorkshopIds); + if (byEmployee != null) + { + if (byEmployee.SignContract) + { + var itemAdd = (item.id, item.EmployeeId, item.WorkshopIds, item.Signature, item.Employee); + allContractSignToBeListWorkshopId.Add(itemAdd); + if (item.Signature == "1") + { + + allContractSignedListWorkshopId.Add(itemAdd); + } + } + + + } + else + { + if (byWorkshop.SignContract) + { + var itemAdd = (item.id, item.EmployeeId, item.WorkshopIds, item.Signature, item.Employee); + allContractSignToBeListWorkshopId.Add(itemAdd); + if (item.Signature == "1") + { + + allContractSignedListWorkshopId.Add(itemAdd); + } + } + } + + + } + + + + var createdContractWorkshopids = allContractSignToBeListWorkshopId.Select(x => x.WorkshopId).ToList(); //قرارداد هایی که امضاء شده - var allContractSigned = allContractCreated.Where(x => x.Signature == "1"); + var allContractSigned = allContractSignedListWorkshopId.Where(x => x.Signature == "1"); - var createdContractTople = allContractCreated - .Select(x => new { x.EmployeeId, x.WorkshopIds }) + var createdContractTople = allContractSignToBeListWorkshopId + .Select(x => new { x.EmployeeId, x.WorkshopId }) .ToList(); - var signedContracTople = allContractCreated.Where(x => x.Signature == "1") - .Select(x => new { x.EmployeeId, x.WorkshopIds }) + var signedContracTople = allContractSigned.Where(x => x.Signature == "1") + .Select(x => new { x.EmployeeId, x.WorkshopId }) .ToList(); Console.WriteLine("ajax 1 >>>>>: " + watch.Elapsed); @@ -1203,8 +1374,8 @@ public class ReportRepository : IReportRepository .Select(workshop => { //var contractToBe = allContractLeftworks.Count(x => x.WorkshopId == workshop.id); - var contractCreated = createdContractTople.Count(x => x.WorkshopIds == workshop.id); - var signedContract = signedContracTople.Count(x => x.WorkshopIds == workshop.id); + var contractCreated = createdContractTople.Count(x => x.WorkshopId == workshop.id); + var signedContract = signedContracTople.Count(x => x.WorkshopId == workshop.id); if (contractCreated > 0) { return new workshopSearch() @@ -1232,9 +1403,9 @@ public class ReportRepository : IReportRepository }; var badWorkshop = workshopListResult.FirstOrDefault(); - var badWorkshopCreated = allContractCreated.Where(x => x.WorkshopIds == badWorkshop.Id); - var badWorkshopSigned = allContractSigned.Where(x => x.WorkshopIds == badWorkshop.Id).Select(x => x.EmployeeId); - var notDoneEmployes = badWorkshopCreated.Include(x => x.Employee).Select(l => new EmployeeNotDone() + var badWorkshopCreated = allContractSignToBeListWorkshopId.Where(x => x.WorkshopId == badWorkshop.Id); + var badWorkshopSigned = allContractSigned.Where(x => x.WorkshopId == badWorkshop.Id).Select(x => x.EmployeeId); + var notDoneEmployes = badWorkshopCreated.Select(l => new EmployeeNotDone() { Id = l.EmployeeId, EmployeeFullName = l.Employee.FullName, @@ -1253,7 +1424,7 @@ public class ReportRepository : IReportRepository return finalResult; } - public WorkshopResult GetWorkshopCheckoutDone(string year, string month, long accountId, List workshopList) + public async Task GetWorkshopCheckoutDone(string year, string month, long accountId, List workshopList) { var watch = System.Diagnostics.Stopwatch.StartNew(); string nowFa = ""; @@ -1277,132 +1448,55 @@ public class ReportRepository : IReportRepository var nextMonthEnd = (($"{nextMonthStartFa}").FindeEndOfMonth()).ToGeorgianDateTime(); - //var instititionContracts = _context.InstitutionContractSet.Where(x => x.IsActiveString == "true").Select(x => x.ContractingPartyId).ToList(); - //var blockContractingPartyIds = _context.PersonalContractingParties.Where(x => x.IsBlock == "false" && x.IsActiveString == "true").Select(x => x.id).ToList(); - ////blockContractingPartyIds = blockContractingPartyIds.Where(x => instititionContracts.Contains(x)).ToList(); - //var workshops = _context.Workshops.Where(x => x.IsActiveString == "true") - // .Include(x => x.WorkshopEmployers) - // .Include(x => x.LeftWorks) - // .Select(x => new ActiveWorkshops - // { - // Id = x.id, - // IsActiveString = x.IsActiveString, - // WorkshopFullName = x.WorkshopFullName, - // ArchiveCode = x.ArchiveCode, - // ContractingPartId = x.WorkshopEmployers.Select(e => e.Employer.ContractingPartyId).FirstOrDefault(), - // AccountIdList = _context.WorkshopAccounts.Where(m => m.WorkshopId == x.id).Select(a => a.AccountId).ToList(), - - - // #region Checkouts - - // //CheckoutLeft befor This Month - // CheckoutLeftIds = x.LeftWorks.Select(l => new LeftWorkViewModel() - // { - // EmployeeId = l.EmployeeId, - // StartWorkDateGr = l.StartWorkDate, - // LeftWorkDateGr = l.LeftWorkDate.AddDays(-1), - - // }).Where(l => - // (l.StartWorkDateGr <= currentMonthStart && l.LeftWorkDateGr > currentMonthStart) || - // (l.StartWorkDateGr <= currentMonthEnd && l.LeftWorkDateGr >= currentMonthEnd) || - // (l.StartWorkDateGr >= currentMonthStart && l.StartWorkDateGr <= currentMonthEnd) || - // (l.LeftWorkDateGr >= currentMonthStart && l.LeftWorkDateGr <= currentMonthEnd)).Select(l => l.EmployeeId).ToList(), - - // #endregion - - // }).Where(e => blockContractingPartyIds.Contains(e.ContractingPartId)) - // .Where(a => a.AccountIdList.Contains(accountId)).AsSplitQuery(); - //var workshopsList = workshops.Select(x => new ActiveWorkshops - //{ - // Id = x.Id, - // IsActiveString = x.IsActiveString, - // WorkshopFullName = x.WorkshopFullName, - // ArchiveCode = x.ArchiveCode, - // ContractingPartId = x.ContractingPartId, - // AccountIdList = x.AccountIdList, - - - // #region Checkouts - - // ////CheckoutLeft befor This Month - // CheckoutLeftIds = _context.InstitutionContractSet.Any(c => c.ContractingPartyId == x.ContractingPartId && c.ContractStartGr <= currentMonthStart && c.ContractEndGr >= currentMonthEnd) ? x.CheckoutLeftIds : new List(), - - - // #endregion - //}).ToList(); - - //var result = workshopsList.Select(x => new ActiveWorkshops - //{ - // Id = x.Id, - // CheckoutLeftWorkCount = x.CheckoutLeftIds.Count, - // WorkshopFullName = x.WorkshopFullName, - // ArchiveCode = x.ArchiveCode, - // CheckoutDoneCount = x.CheckoutLeftIds.Count > 0 ? _context.CheckoutSet.Where(ch => ch.WorkshopId == x.Id).Where(ct => x.CheckoutLeftIds.Contains(ct.EmployeeId)) - // .Count(ch => - // ch.ContractStart >= currentMonthStart && ch.ContractStart < currentMonthEnd && - // ch.IsActiveString == "true") : 0, - - - //}).Where(x => x.CheckoutLeftWorkCount > 0).ToList(); - //var workshopList = result.Select(x => new workshopSearch() - //{ - // Id = x.Id, - // WorkshopFullName = x.WorkshopFullName, - // ArchiveCode = x.ArchiveCode, - // CheckoutDonePercent = ((x.CheckoutDoneCount * 100) / x.CheckoutLeftWorkCount), - - //}).OrderBy(x => x.CheckoutDonePercent).ToList(); - - //var badWorkshop = workshopList.FirstOrDefault(); - //var badWorkshopLeftWorks = _context.LeftWorkList.Where(l => l.WorkshopId == badWorkshop.Id).Select(l => new LeftWorkViewModel() - //{ - // Id = l.id, - // EmployeeId = l.EmployeeId, - // EmployeeFullName = l.EmployeeFullName, - // StartWorkDateGr = l.StartWorkDate, - // LeftWorkDateGr = l.LeftWorkDate.AddDays(-1), - - //}).Where(l => (l.StartWorkDateGr <= currentMonthStart && l.LeftWorkDateGr > currentMonthStart) || - // (l.StartWorkDateGr <= currentMonthEnd && l.LeftWorkDateGr >= currentMonthEnd) || - // (l.StartWorkDateGr >= currentMonthStart && l.StartWorkDateGr <= currentMonthEnd) || - // (l.LeftWorkDateGr >= currentMonthStart && l.LeftWorkDateGr <= currentMonthEnd)).ToList(); - //var badWorkshopCheckouts = _context.CheckoutSet.Where(ch => ch.WorkshopId == badWorkshop.Id) - // .Where(ch => - // ch.ContractStart >= currentMonthStart && ch.ContractStart < currentMonthEnd && - // ch.IsActiveString == "true").Select(x => x.EmployeeId).ToList(); - //var notDoneEmployes = badWorkshopLeftWorks.Select(l => new EmployeeNotDone() - //{ - // Id = l.EmployeeId, - // EmployeeFullName = l.EmployeeFullName, - - //}).Where(l => !badWorkshopCheckouts.Contains(l.Id)).ToList(); - - //var finalResult = new WorkshopResult() - //{ - // WorkshopSearches = workshopList, - // EmployeeNotDones = notDoneEmployes, - //}; - #region NewChanges //تمام پرسنل فعال برای قراداد در ماه مورد نظر - var allContractLeftworks = _context.LeftWorkList + var allContractLeftworksList = await _context.LeftWorkList .Where(x => workshopList.Contains(x.WorkshopId)) .Where(x => - x.StartWorkDate <= currentMonthEnd && x.LeftWorkDate > currentMonthStart); + x.StartWorkDate <= currentMonthEnd && x.LeftWorkDate > currentMonthStart) + .Select(x => new { x.EmployeeId, x.WorkshopId, x.EmployeeFullName }) + .ToListAsync(); + + + var byWorkshopDisabledCheck = await _context.Workshops.Where(x => workshopList.Contains(x.id)).Select(x => new { x.id, x.CreateCheckout}).ToListAsync(); + var byEmployeeDisabledCheck = await _context.EmployeeComputeOptionsSet.Where(x => workshopList.Contains(x.WorkshopId)) + .Select(x => new { x.EmployeeId, x.WorkshopId, x.CreateCheckout }).ToListAsync(); + var allContractLeftworks = new List<(long EmployeeId, long WorkshopId, string EmployeeFullName)>(); + foreach (var item in allContractLeftworksList) + { + var toBeRemoveByEmployee = + byEmployeeDisabledCheck.FirstOrDefault(x => x.EmployeeId == item.EmployeeId && x.WorkshopId == item.WorkshopId); + var toBeRemoveByWorkshop = byWorkshopDisabledCheck.FirstOrDefault(x => x.id == item.WorkshopId); + + if (toBeRemoveByEmployee != null) + { + if (toBeRemoveByEmployee.CreateCheckout) + { + var add = (item.EmployeeId, item.WorkshopId, item.EmployeeFullName); + allContractLeftworks.Add(add); + } + } + else + { + if (toBeRemoveByWorkshop.CreateCheckout) + { + var add = (item.EmployeeId, item.WorkshopId, item.EmployeeFullName); + allContractLeftworks.Add(add); + } + } + + + + } var allContractLeftworkWorkshopIds = allContractLeftworks.Select(x => x.WorkshopId).ToList(); - - var allContractToBe = allContractLeftworks - .Select(x => new { x.EmployeeId, x.WorkshopId }) - .ToList(); - - //تمام قرارداد های ایجاد شده ماه مورد نظر var allContractLeftworkEmployeeIds = allContractLeftworks.Select(x => x.EmployeeId); + var allContractCreated = _context.CheckoutSet - .Where(x => allContractLeftworkEmployeeIds.Contains(x.EmployeeId)) + .Where(x => allContractLeftworkEmployeeIds.Contains(x.EmployeeId) && allContractLeftworkWorkshopIds.Contains(x.WorkshopId)) .Where(x => x.ContractStart.Date <= currentMonthEnd.Date && x.ContractEnd.Date > currentMonthStart.Date && x.IsActiveString == "true"); @@ -1411,14 +1505,15 @@ public class ReportRepository : IReportRepository .ToList(); - //قرارداد هایی که امضاء شده - var allContractSigned = allContractCreated.Count(x => x.Signature == "1"); + Console.WriteLine("ajax 1 >>>>>: " + watch.Elapsed); var workshops = _context.Workshops.Include(x => x.LeftWorks).Where(x => allContractLeftworkWorkshopIds.Contains(x.id)).ToList(); var workshopListResult = workshops .Select(workshop => { - var toBe = workshop.LeftWorks.Where(x => + var toBe = workshop.LeftWorks + .Where(x => allContractLeftworkEmployeeIds.Contains(x.EmployeeId)) + .Where(x => x.StartWorkDate <= currentMonthEnd && x.LeftWorkDate > currentMonthStart) .GroupBy(x => x.EmployeeId) .Select(x => x.Key).ToList(); @@ -1472,7 +1567,7 @@ public class ReportRepository : IReportRepository return finalResult; } - public WorkshopResult GetWorkshopCheckoutSignDone(string year, string month, long accountId, + public async Task GetWorkshopCheckoutSignDone(string year, string month, long accountId, List workshopList) { var watch = System.Diagnostics.Stopwatch.StartNew(); @@ -1497,143 +1592,123 @@ public class ReportRepository : IReportRepository var nextMonthEnd = (($"{nextMonthStartFa}").FindeEndOfMonth()).ToGeorgianDateTime(); - //var instititionContracts = _context.InstitutionContractSet.Where(x => x.IsActiveString == "true").Select(x => x.ContractingPartyId).ToList(); - //var blockContractingPartyIds = _context.PersonalContractingParties.Where(x => x.IsBlock == "false" && x.IsActiveString == "true").Select(x => x.id).ToList(); - ////blockContractingPartyIds = blockContractingPartyIds.Where(x => instititionContracts.Contains(x)).ToList(); - //var workshops = _context.Workshops.Where(x => x.IsActiveString == "true") - // .Include(x => x.WorkshopEmployers) - // .Include(x => x.LeftWorks) - // .Select(x => new ActiveWorkshops - // { - // Id = x.id, - // IsActiveString = x.IsActiveString, - // WorkshopFullName = x.WorkshopFullName, - // ArchiveCode = x.ArchiveCode, - // ContractingPartId = x.WorkshopEmployers.Select(e => e.Employer.ContractingPartyId).FirstOrDefault(), - // AccountIdList = _context.WorkshopAccounts.Where(m => m.WorkshopId == x.id).Select(a => a.AccountId).ToList(), - - - // #region Checkouts - - // //CheckoutLeft befor This Month - // CheckoutLeftIds = x.LeftWorks.Select(l => new LeftWorkViewModel() - // { - // EmployeeId = l.EmployeeId, - // StartWorkDateGr = l.StartWorkDate, - // LeftWorkDateGr = l.LeftWorkDate.AddDays(-1), - - // }).Where(l => - // (l.StartWorkDateGr <= currentMonthStart && l.LeftWorkDateGr > currentMonthStart) || - // (l.StartWorkDateGr <= currentMonthEnd && l.LeftWorkDateGr >= currentMonthEnd) || - // (l.StartWorkDateGr >= currentMonthStart && l.StartWorkDateGr <= currentMonthEnd) || - // (l.LeftWorkDateGr >= currentMonthStart && l.LeftWorkDateGr <= currentMonthEnd)).Select(l => l.EmployeeId).ToList(), - - // #endregion - - // }).Where(e => blockContractingPartyIds.Contains(e.ContractingPartId)) - // .Where(a => a.AccountIdList.Contains(accountId)).AsSplitQuery(); - //var workshopsList = workshops.Select(x => new ActiveWorkshops - //{ - // Id = x.Id, - // IsActiveString = x.IsActiveString, - // WorkshopFullName = x.WorkshopFullName, - // ArchiveCode = x.ArchiveCode, - // ContractingPartId = x.ContractingPartId, - // AccountIdList = x.AccountIdList, - - - // #region Checkouts - - // ////CheckoutLeft befor This Month - // CheckoutLeftIds = _context.InstitutionContractSet.Any(c => c.ContractingPartyId == x.ContractingPartId && c.ContractStartGr <= currentMonthStart && c.ContractEndGr >= currentMonthEnd) ? x.CheckoutLeftIds : new List(), - - - // #endregion - //}).ToList(); - - //var result = workshopsList.Select(x => new ActiveWorkshops - //{ - // Id = x.Id, - // CheckoutLeftWorkCount = x.CheckoutLeftIds.Count, - // WorkshopFullName = x.WorkshopFullName, - // ArchiveCode = x.ArchiveCode, - // CheckoutDoneCount = x.CheckoutLeftIds.Count > 0 ? _context.CheckoutSet.Where(ch => ch.WorkshopId == x.Id).Where(ct => x.CheckoutLeftIds.Contains(ct.EmployeeId)) - // .Count(ch => - // ch.ContractStart >= currentMonthStart && ch.ContractStart < currentMonthEnd && - // ch.IsActiveString == "true") : 0, - // CheckoutSignDoneCount = x.CheckoutLeftIds.Count > 0 ? _context.CheckoutSet.Where(ch => ch.WorkshopId == x.Id && ch.Signature == "1").Where(ct => x.CheckoutLeftIds.Contains(ct.EmployeeId)) - // .Count(ch => - // ch.ContractStart >= currentMonthStart && ch.ContractStart < currentMonthEnd && - // ch.IsActiveString == "true") : 0, - - - //}).Where(x => x.CheckoutDoneCount > 0).ToList(); - //var workshopList = result.Select(x => new workshopSearch() - //{ - // Id = x.Id, - // WorkshopFullName = x.WorkshopFullName, - // ArchiveCode = x.ArchiveCode, - // CheckoutSignPercent = ((x.CheckoutSignDoneCount * 100) / x.CheckoutDoneCount), - - //}).OrderBy(x => x.CheckoutSignPercent).ToList(); - - //var badWorkshop = workshopList.FirstOrDefault(); - //var badWorkshopLeftWorks = _context.LeftWorkList.Where(l => l.WorkshopId == badWorkshop.Id).Select(l => new LeftWorkViewModel() - //{ - // Id = l.id, - // EmployeeId = l.EmployeeId, - // EmployeeFullName = l.EmployeeFullName, - // StartWorkDateGr = l.StartWorkDate, - // LeftWorkDateGr = l.LeftWorkDate.AddDays(-1), - - //}).Where(l => (l.StartWorkDateGr <= currentMonthStart && l.LeftWorkDateGr > currentMonthStart) || - // (l.StartWorkDateGr <= currentMonthEnd && l.LeftWorkDateGr >= currentMonthEnd) || - // (l.StartWorkDateGr >= currentMonthStart && l.StartWorkDateGr <= currentMonthEnd) || - // (l.LeftWorkDateGr >= currentMonthStart && l.LeftWorkDateGr <= currentMonthEnd)).ToList(); - //var badWorkshopCheckouts = _context.CheckoutSet.Where(ch => ch.WorkshopId == badWorkshop.Id) - // .Where(ch => - // ch.ContractStart >= currentMonthStart && ch.ContractStart < currentMonthEnd && ch.Signature == "1" && - // ch.IsActiveString == "true").Select(x => x.EmployeeId).ToList(); - //var notDoneEmployes = badWorkshopLeftWorks.Select(l => new EmployeeNotDone() - //{ - // Id = l.EmployeeId, - // EmployeeFullName = l.EmployeeFullName, - - //}).Where(l => !badWorkshopCheckouts.Contains(l.Id)).ToList(); - - //var finalResult = new WorkshopResult() - //{ - // WorkshopSearches = workshopList, - // EmployeeNotDones = notDoneEmployes, - //}; #region NewChanges - //تمام پرسنل فعال برای قراداد در ماه مورد نظر - var allContractLeftworks = _context.LeftWorkList - .Where(x => workshopList.Contains(x.WorkshopId)) - .Where(x => - x.StartWorkDate <= currentMonthEnd && x.LeftWorkDate > currentMonthStart); - - //تمام قرارداد های ایجاد شده ماه مورد نظر - var allContractLeftworkEmployeeIds = allContractLeftworks.Select(x => x.EmployeeId); + var allContractLeftworksList = await _context.LeftWorkList + .Where(x => workshopList.Contains(x.WorkshopId)) + .Where(x => x.StartWorkDate <= currentMonthEnd && x.LeftWorkDate > currentMonthStart) + .Select(x => new { x.EmployeeId, x.WorkshopId, x.EmployeeFullName, x.Employee }) + .ToListAsync(); - var allContractCreated = _context.CheckoutSet + var byWorkshopDisabledCheck = await _context.Workshops.Select(x => new { x.id,x.CreateCheckout, x.SignCheckout }).ToListAsync(); + var byEmployeeDisabledCheck = await _context.EmployeeComputeOptionsSet + .Select(x => new { x.EmployeeId, x.WorkshopId, x.CreateCheckout, x.SignCheckout }).ToListAsync(); + var allContractLeftworks = new List<(long EmployeeId, long WorkshopId, string EmployeeFullName)>(); + foreach (var item in allContractLeftworksList) + { + var toBeRemoveByEmployee = + byEmployeeDisabledCheck.FirstOrDefault(x => x.EmployeeId == item.EmployeeId && x.WorkshopId == item.WorkshopId); + var toBeRemoveByWorkshop = byWorkshopDisabledCheck.FirstOrDefault(x => x.id == item.WorkshopId); + + if (toBeRemoveByEmployee != null) + { + if (toBeRemoveByEmployee.CreateCheckout) + { + var add = (item.EmployeeId, item.WorkshopId, item.EmployeeFullName); + allContractLeftworks.Add(add); + } + } + else + { + if (toBeRemoveByWorkshop.CreateCheckout) + { + var add = (item.EmployeeId, item.WorkshopId, item.EmployeeFullName); + allContractLeftworks.Add(add); + } + } + + + + } + + + + + //var signContractWorkshopDisabled = await _context.Workshops.Where(x => x.SignContract == false).ToListAsync(); + //var signContractDisabled = await _context.EmployeeComputeOptionsSet.Where(x => x.SignContract == false) + // .Select(x => new { x.EmployeeId, x.WorkshopId }).ToListAsync(); + + var allContractLeftworkEmployeeIds = allContractLeftworks.Select(x => x.EmployeeId).ToList(); + + + var allContractCreated =await _context.CheckoutSet .Where(x => allContractLeftworkEmployeeIds.Contains(x.EmployeeId)) .Where(x => - x.ContractStart.Date <= currentMonthEnd.Date && x.ContractEnd.Date > currentMonthStart.Date && x.IsActiveString == "true"); + x.ContractStart <= currentMonthEnd && x.ContractEnd > currentMonthStart && x.IsActiveString == "true") + .Select(x => new { x.id, x.EmployeeId, x.WorkshopId, x.Signature, x.EmployeeFullName }).ToListAsync(); + + + var allContractSignedListWorkshopId = new List<(long id, long EmployeeId, long WorkshopId, string Signature, string EmployeeFullName)>(); + + var allContractSignToBeListWorkshopId = new List<(long id, long EmployeeId, long WorkshopId, string Signature, string EmployeeFullName)>(); + + + foreach (var item in allContractCreated) + { + var byEmployee = + byEmployeeDisabledCheck.FirstOrDefault(x => x.EmployeeId == item.EmployeeId && x.WorkshopId == item.WorkshopId); + var byWorkshop = byWorkshopDisabledCheck.FirstOrDefault(x => x.id == item.WorkshopId); + if (byEmployee != null) + { + if (byEmployee.SignCheckout) + { + var itemAdd = (item.id, item.EmployeeId, item.WorkshopId, item.Signature, item.EmployeeFullName); + allContractSignToBeListWorkshopId.Add(itemAdd); + if (item.Signature == "1") + { + + allContractSignedListWorkshopId.Add(itemAdd); + } + } + + + } + else + { + if (byWorkshop.SignCheckout) + { + var itemAdd = (item.id, item.EmployeeId, item.WorkshopId, item.Signature, item.EmployeeFullName); + allContractSignToBeListWorkshopId.Add(itemAdd); + if (item.Signature == "1") + { + + allContractSignedListWorkshopId.Add(itemAdd); + } + } + } + + + } + + + + var createdContractWorkshopids = allContractSignToBeListWorkshopId.Select(x => x.WorkshopId).ToList(); - var createdContractWorkshopids = allContractCreated.Select(x => x.WorkshopId).ToList(); //قرارداد هایی که امضاء شده - var allContractSigned = allContractCreated.Where(x => x.Signature == "1"); - var createdContractTople = allContractCreated + var allContractSigned = allContractSignedListWorkshopId.Where(x => x.Signature == "1"); + + + + var createdContractTople = allContractSignToBeListWorkshopId .Select(x => new { x.EmployeeId, x.WorkshopId }) .ToList(); - var signedContracTople = allContractCreated.Where(x => x.Signature == "1") + var signedContracTople = allContractSigned.Where(x => x.Signature == "1") .Select(x => new { x.EmployeeId, x.WorkshopId }) .ToList(); + Console.WriteLine("ajax 1 >>>>>: " + watch.Elapsed); var workshops = _context.Workshops.Where(x => createdContractWorkshopids.Contains(x.id)).ToList(); var workshopListResult = workshops @@ -1669,7 +1744,7 @@ public class ReportRepository : IReportRepository }; var badWorkshop = workshopListResult.FirstOrDefault(); - var badWorkshopCreated = allContractCreated.Where(x => x.WorkshopId == badWorkshop.Id); + var badWorkshopCreated = allContractSignToBeListWorkshopId.Where(x => x.WorkshopId == badWorkshop.Id); var badWorkshopSigned = allContractSigned.Where(x => x.WorkshopId == badWorkshop.Id).Select(x => x.EmployeeId); var notDoneEmployes = badWorkshopCreated.Select(l => new EmployeeNotDone() { @@ -1692,7 +1767,7 @@ public class ReportRepository : IReportRepository #region getEmployeeNotDonBySelectWorkshop - public List GetEmployeeContract(string year, string month, long workshopId) + public async Task> GetEmployeeContract(string year, string month, long workshopId) { string nowFa = ""; if (!string.IsNullOrWhiteSpace(year) && !string.IsNullOrWhiteSpace(month)) @@ -1714,54 +1789,68 @@ public class ReportRepository : IReportRepository var nextMonthStart = ($"{nextMonthStartFa}").ToGeorgianDateTime(); var nextMonthEnd = (($"{nextMonthStartFa}").FindeEndOfMonth()).ToGeorgianDateTime(); - // پرسنلی که باید انجام میشد - //var workshopLeftWorks = _context.LeftWorkList.Where(l => l.WorkshopId == workshopId).Select(l => new LeftWorkViewModel() - //{ - // Id = l.id, - // EmployeeId = l.EmployeeId, - // EmployeeFullName = l.EmployeeFullName, - // StartWorkDateGr = l.StartWorkDate, - // LeftWorkDateGr = l.LeftWorkDate.AddDays(-1), - - //}).Where(l => - // (l.StartWorkDateGr <= nextMonthStart && l.LeftWorkDateGr > nextMonthStart) || - // (l.StartWorkDateGr <= nextMonthEnd && l.LeftWorkDateGr >= nextMonthEnd) || - // (l.StartWorkDateGr >= nextMonthStart && l.StartWorkDateGr <= nextMonthEnd) || - // (l.LeftWorkDateGr >= nextMonthStart && l.LeftWorkDateGr <= nextMonthEnd)).ToList(); - ////پرسنلی که کارشان انجام شده - //var workshopContracts = _context.Contracts.Where(ct => ct.WorkshopIds == workshopId && ct.IsActiveString == "true") - // .Where(l => (l.ContarctStart <= nextMonthStart && l.ContractEnd >= nextMonthStart) || - // (l.ContarctStart <= nextMonthEnd && l.ContractEnd >= nextMonthEnd) || - // (l.ContarctStart >= nextMonthStart && l.ContarctStart <= nextMonthEnd) || - // (l.ContractEnd >= nextMonthStart && l.ContractEnd <= nextMonthEnd)).Select(x => x.EmployeeId).ToList(); - #region New - var allContractLeftworks = _context.LeftWorkList + var allContractLeftworksList =await _context.LeftWorkList .Where(x => x.WorkshopId == workshopId) .Where(x => - x.StartWorkDate <= nextMonthEnd && x.LeftWorkDate > nextMonthStart); + x.StartWorkDate <= nextMonthEnd && x.LeftWorkDate > nextMonthStart).ToListAsync(); + + var byWorkshopDisabledCheck = await _context.Workshops.FirstOrDefaultAsync(x=>x.id == workshopId); + var byEmployeeDisabledCheck = await _context.EmployeeComputeOptionsSet.Where(x=>x.WorkshopId == workshopId) + .Select(x => new { x.EmployeeId, x.WorkshopId, x.CreateContract }).ToListAsync(); + var allContractLeftworks = new List<(long EmployeeId, long WorkshopId, string EmployeeFullName)>(); + + foreach (var item in allContractLeftworksList) + { + var toBeRemoveByEmployee = + byEmployeeDisabledCheck.FirstOrDefault(x => x.EmployeeId == item.EmployeeId && x.WorkshopId == item.WorkshopId); + + + if (toBeRemoveByEmployee != null) + { + if (toBeRemoveByEmployee.CreateContract) + { + var add = (item.EmployeeId, item.WorkshopId, item.EmployeeFullName); + allContractLeftworks.Add(add); + } + } + else + { + if (byWorkshopDisabledCheck.CreateContract) + { + var add = (item.EmployeeId, item.WorkshopId, item.EmployeeFullName); + allContractLeftworks.Add(add); + } + } + + + + } + + if (allContractLeftworks.Count == 0) + return new List(); var allContractLeftworkEmployeeIds = allContractLeftworks.Select(x => x.EmployeeId).ToList(); - var allContractCreated = _context.Contracts + var allContractCreated =await _context.Contracts .Where(x => allContractLeftworkEmployeeIds.Contains(x.EmployeeId) && x.WorkshopIds == workshopId) .Where(x => - x.ContarctStart.Date <= nextMonthEnd.Date && x.ContractEnd.Date > nextMonthStart.Date && x.IsActiveString == "true"); - var allContractCreatedEmoployeeIds = allContractCreated.Select(x => x.EmployeeId).ToList(); + x.ContarctStart <= nextMonthEnd && x.ContractEnd > nextMonthStart && x.IsActiveString == "true").Select(x => x.EmployeeId).ToListAsync(); + return allContractLeftworks.Select(l => new EmployeeNotDone() { Id = l.EmployeeId, EmployeeFullName = l.EmployeeFullName, - }).Where(x => !allContractCreatedEmoployeeIds.Contains(x.Id)).ToList(); + }).Where(x => !allContractCreated.Contains(x.Id)).ToList(); #endregion } - public List GetEmployeeContractSign(string year, string month, long workshopId) + public async Task> GetEmployeeContractSign(string year, string month, long workshopId) { string nowFa = ""; if (!string.IsNullOrWhiteSpace(year) && !string.IsNullOrWhiteSpace(month)) @@ -1804,28 +1893,63 @@ public class ReportRepository : IReportRepository #region New - - var allContractNotSignedEmployeeIds = _context.Contracts + var byWorkshopDisabledCheck = await _context.Workshops.FirstOrDefaultAsync(x => x.id == workshopId); + var byEmployeeDisabledCheck = await _context.EmployeeComputeOptionsSet.Where(x=>x.WorkshopId == workshopId) + .Select(x => new { x.EmployeeId, x.WorkshopId, x.SignContract }).ToListAsync(); + + var allContractNotSignedEmployeeIdList =await _context.Contracts .Where(x => x.WorkshopIds == workshopId) .Where(x => - x.ContarctStart.Date <= nextMonthEnd.Date && x.ContractEnd.Date > nextMonthStart.Date && x.IsActiveString == "true" && x.Signature == "0") - .Select(x => x.EmployeeId) - .ToList(); + x.ContarctStart.Date <= nextMonthEnd && x.ContractEnd > nextMonthStart && x.IsActiveString == "true") + .Select(x => new { x.EmployeeId , x.Signature}) + .ToListAsync(); + var allContractNotSignedEmployeeIds = new List(); + + foreach (var item in allContractNotSignedEmployeeIdList) + { + var toBeRemoveByEmployee = + byEmployeeDisabledCheck.FirstOrDefault(x => x.EmployeeId == item.EmployeeId); + + + if (toBeRemoveByEmployee != null) + { + if (toBeRemoveByEmployee.SignContract) + { + + if (item.Signature != "1") + { + allContractNotSignedEmployeeIds.Add(item.EmployeeId); + } + + } + } + else + { + if (byWorkshopDisabledCheck.SignContract) + { + if (item.Signature != "1") + { + allContractNotSignedEmployeeIds.Add(item.EmployeeId); + } + } + } + + } if (allContractNotSignedEmployeeIds.Count == 0) return new List(); - return _context.Employees.Where(x => allContractNotSignedEmployeeIds.Contains(x.id)) + return await _context.Employees.Where(x => allContractNotSignedEmployeeIds.Contains(x.id)) .Select(x => new EmployeeNotDone() { Id = x.id, EmployeeFullName = x.FullName - }).ToList(); + }).ToListAsync(); #endregion } - public List GetEmployeeCheckout(string year, string month, long workshopId) + public async Task> GetEmployeeCheckout(string year, string month, long workshopId) { string nowFa = ""; if (!string.IsNullOrWhiteSpace(year) && !string.IsNullOrWhiteSpace(month)) @@ -1871,15 +1995,50 @@ public class ReportRepository : IReportRepository #region New - var allContractLeftworks = _context.LeftWorkList + var allContractLeftworksList = await _context.LeftWorkList .Where(x => x.WorkshopId == workshopId) .Where(x => - x.StartWorkDate <= currentMonthEnd && x.LeftWorkDate > currentMonthStart); + x.StartWorkDate <= nextMonthEnd && x.LeftWorkDate > nextMonthStart).ToListAsync(); + + var byWorkshopDisabledCheck = await _context.Workshops.FirstOrDefaultAsync(x => x.id == workshopId); + var byEmployeeDisabledCheck = await _context.EmployeeComputeOptionsSet.Where(x => x.WorkshopId == workshopId) + .Select(x => new { x.EmployeeId, x.WorkshopId, x.CreateCheckout }).ToListAsync(); + var allContractLeftworks = new List<(long EmployeeId, long WorkshopId, string EmployeeFullName)>(); + + foreach (var item in allContractLeftworksList) + { + var toBeRemoveByEmployee = + byEmployeeDisabledCheck.FirstOrDefault(x => x.EmployeeId == item.EmployeeId && x.WorkshopId == item.WorkshopId); + + + if (toBeRemoveByEmployee != null) + { + if (toBeRemoveByEmployee.CreateCheckout) + { + var add = (item.EmployeeId, item.WorkshopId, item.EmployeeFullName); + allContractLeftworks.Add(add); + } + } + else + { + if (byWorkshopDisabledCheck.CreateCheckout) + { + var add = (item.EmployeeId, item.WorkshopId, item.EmployeeFullName); + allContractLeftworks.Add(add); + } + } + + + + } + if (allContractLeftworks.Count == 0) + return new List(); var allContractLeftworkEmployeeIds = allContractLeftworks.Select(x => x.EmployeeId).ToList(); - var allContractCreated = _context.CheckoutSet + + var allContractCreated =await _context.CheckoutSet .Where(x => allContractLeftworkEmployeeIds.Contains(x.EmployeeId) && x.WorkshopId == workshopId) .Where(x => - x.ContractStart.Date <= currentMonthEnd.Date && x.ContractEnd.Date > currentMonthStart.Date && x.IsActiveString == "true"); + x.ContractStart <= currentMonthEnd && x.ContractEnd > currentMonthStart && x.IsActiveString == "true").ToListAsync(); var allContractCreatedEmoployeeIds = allContractCreated.Select(x => x.EmployeeId).ToList(); return allContractLeftworks.Select(l => new EmployeeNotDone() @@ -1892,7 +2051,7 @@ public class ReportRepository : IReportRepository } - public List GetEmployeeCheckoutSign(string year, string month, long workshopId) + public async Task> GetEmployeeCheckoutSign(string year, string month, long workshopId) { string nowFa = ""; if (!string.IsNullOrWhiteSpace(year) && !string.IsNullOrWhiteSpace(month)) @@ -1914,33 +2073,47 @@ public class ReportRepository : IReportRepository var nextMonthStart = ($"{nextMonthStartFa}").ToGeorgianDateTime(); var nextMonthEnd = (($"{nextMonthStartFa}").FindeEndOfMonth()).ToGeorgianDateTime(); - //var badWorkshopLeftWorks = _context.LeftWorkList.Where(l => l.WorkshopId == workshopId).Select(l => new LeftWorkViewModel() - //{ - // Id = l.id, - // EmployeeId = l.EmployeeId, - // EmployeeFullName = l.EmployeeFullName, - // StartWorkDateGr = l.StartWorkDate, - // LeftWorkDateGr = l.LeftWorkDate.AddDays(-1), - - //}).Where(l => (l.StartWorkDateGr <= currentMonthStart && l.LeftWorkDateGr > currentMonthStart) || - // (l.StartWorkDateGr <= currentMonthEnd && l.LeftWorkDateGr >= currentMonthEnd) || - // (l.StartWorkDateGr >= currentMonthStart && l.StartWorkDateGr <= currentMonthEnd) || - // (l.LeftWorkDateGr >= currentMonthStart && l.LeftWorkDateGr <= currentMonthEnd)).ToList(); - //var badWorkshopCheckouts = _context.CheckoutSet.Where(ch => ch.WorkshopId == workshopId) - // .Where(ch => - // ch.ContractStart >= currentMonthStart && ch.ContractStart < currentMonthEnd && ch.Signature == "1" && - // ch.IsActiveString == "true").Select(x => x.EmployeeId).ToList(); #region New + var byWorkshopDisabledCheck = await _context.Workshops.FirstOrDefaultAsync(x => x.id == workshopId); + var byEmployeeDisabledCheck = await _context.EmployeeComputeOptionsSet.Where(x => x.WorkshopId == workshopId) + .Select(x => new { x.EmployeeId, x.WorkshopId, x.SignCheckout }).ToListAsync(); - - var allCheckoutNotSignedEmployeeIds = _context.CheckoutSet + var allCheckoutNotSignedEmployeeIdList =await _context.CheckoutSet .Where(x => x.WorkshopId == workshopId) .Where(x => - x.ContractStart.Date <= currentMonthEnd.Date && x.ContractEnd.Date > currentMonthStart.Date && x.IsActiveString == "true" && x.Signature == "0") - .Select(x => x.EmployeeId) - .ToList(); + x.ContractStart <= currentMonthEnd && x.ContractEnd > currentMonthStart && x.IsActiveString == "true") + .Select(x => new { x.EmployeeId , x.Signature}) + .ToListAsync(); + + var allCheckoutNotSignedEmployeeIds = new List(); + + foreach (var item in allCheckoutNotSignedEmployeeIdList) + { + var toBeRemoveByEmployee = + byEmployeeDisabledCheck.FirstOrDefault(x => x.EmployeeId == item.EmployeeId); + + + if (toBeRemoveByEmployee != null) + { + if (toBeRemoveByEmployee.SignCheckout) + { + if (item.Signature != "1") + { + allCheckoutNotSignedEmployeeIds.Add(item.EmployeeId); + } + } + } + else + { + if (item.Signature != "1") + { + allCheckoutNotSignedEmployeeIds.Add(item.EmployeeId); + } + } + + } if (allCheckoutNotSignedEmployeeIds.Count == 0) return new List(); @@ -1952,11 +2125,7 @@ public class ReportRepository : IReportRepository }).ToList(); #endregion - //return badWorkshopLeftWorks.Select(l => new EmployeeNotDone() - //{ - // Id = l.EmployeeId, - // EmployeeFullName = l.EmployeeFullName, - //}).Where(l => !badWorkshopCheckouts.Contains(l.Id)).ToList(); + } @@ -1964,7 +2133,7 @@ public class ReportRepository : IReportRepository #region PrintAll - public PrintAllContractCheckout GetPrintAllContractDone(string year, string month, long accountId, + public async Task GetPrintAllContractDone(string year, string month, long accountId, List workshopList) { var watch = System.Diagnostics.Stopwatch.StartNew(); @@ -1992,66 +2161,84 @@ public class ReportRepository : IReportRepository #region New - var accountWorkshopList = _context.Workshops - .Where(x => workshopList.Contains(x.id)) - .Include(x => x.LeftWorks.Where(left => - left.StartWorkDate <= nextMonthEnd && left.LeftWorkDate > nextMonthStart)) - .Include(x => x.Contracts2.Where(contract => - contract.ContarctStart.Date <= nextMonthEnd.Date && contract.ContractEnd.Date > nextMonthStart.Date && - contract.IsActiveString == "true")).ToList(); + //var accountWorkshopList = _context.Workshops + // .Where(x => workshopList.Contains(x.id)) + // .Include(x => x.LeftWorks.Where(left => + // left.StartWorkDate <= nextMonthEnd && left.LeftWorkDate > nextMonthStart)) + // .Include(x => x.Contracts2.Where(contract => + // contract.ContarctStart.Date <= nextMonthEnd.Date && contract.ContractEnd.Date > nextMonthStart.Date && + // contract.IsActiveString == "true")).ToList(); - var notCompletedWorkshops = accountWorkshopList.Select(workshop => - { - var lefts = workshop.LeftWorks.Select(x => new { x.EmployeeId, x.EmployeeFullName }).Distinct().ToList(); - var contractToBe = lefts.Count; - var contractCreated = workshop.Contracts2.Count(); - var createdContractEmployeeIdList = workshop.Contracts2.Select(x => x.EmployeeId).ToList(); - var contractDonePercent = contractToBe > 0 ? ((contractCreated * 100) / contractToBe) : 100; - if (contractDonePercent < 100) - { + //var notCompletedWorkshops = accountWorkshopList.Select(workshop => + // { + // var lefts = workshop.LeftWorks.Select(x => new { x.EmployeeId, x.EmployeeFullName }).Distinct().ToList(); + // var contractToBe = lefts.Count; + // var contractCreated = workshop.Contracts2.Count(); + // var createdContractEmployeeIdList = workshop.Contracts2.Select(x => x.EmployeeId).ToList(); + // var contractDonePercent = contractToBe > 0 ? ((contractCreated * 100) / contractToBe) : 100; + // if (contractDonePercent < 100) + // { - var employeeNotDone = - lefts.Where(x => !createdContractEmployeeIdList.Contains(x.EmployeeId)).Select(l => new EmployeeNotDone() - { - Id = l.EmployeeId, - EmployeeFullName = l.EmployeeFullName, + // var employeeNotDone = + // lefts.Where(x => !createdContractEmployeeIdList.Contains(x.EmployeeId)).Select(l => new EmployeeNotDone() + // { + // Id = l.EmployeeId, + // EmployeeFullName = l.EmployeeFullName, - }).ToList(); - return new workshopSearch() - { - Id = workshop.id, - WorkshopFullName = workshop.WorkshopFullName, - ArchiveCode = workshop.ArchiveCode, - ContractDonePercent = contractDonePercent, - EmployeeNotDones = employeeNotDone - }; - } - else - { - return null; - } - }).Where(x => x != null) - .OrderBy(x => x.ContractDonePercent) - .ToList(); + // }).ToList(); + // return new workshopSearch() + // { + // Id = workshop.id, + // WorkshopFullName = workshop.WorkshopFullName, + // ArchiveCode = workshop.ArchiveCode, + // ContractDonePercent = contractDonePercent, + // EmployeeNotDones = employeeNotDone + // }; + // } + // else + // { + // return null; + // } + // }).Where(x => x != null) + // .OrderBy(x => x.ContractDonePercent) + // .ToList(); #endregion + var getAllWorkshopContractToBe = GetWorkshopContractDone(year, month, accountId, workshopList).GetAwaiter().GetResult(); + var workshopSearch = getAllWorkshopContractToBe.WorkshopSearches.Where(x => x.ContractDonePercent < 100).ToList(); + var workshopFinalResult = new List(); + foreach (var item in workshopSearch) + { + var employeeNotDone = GetEmployeeContract(year, month, item.Id).GetAwaiter().GetResult(); + var res = new workshopSearch() + { + Id = item.Id, + WorkshopFullName = item.WorkshopFullName, + ArchiveCode = item.ArchiveCode, + ContractDonePercent = item.ContractDonePercent, + EmployeeNotDones = employeeNotDone + }; + workshopFinalResult.Add(res); + } + + var account = await _accountContext.Accounts.FirstOrDefaultAsync(x => x.id == accountId); var finalResult = new PrintAllContractCheckout() { AccountId = accountId, - AccountFullName = _accountContext.Accounts.FirstOrDefault(x => x.id == accountId)?.Fullname, + AccountFullName = account.Fullname, Year = $"{nextMonthStartFa.Year}", Month = nextMonthStartFa.Month.ToFarsiMonthByIntNumber(), ReportType = "تنظیم قرارداد", - WorkshopSearches = notCompletedWorkshops, + WorkshopSearches = workshopFinalResult, }; Console.WriteLine("ajax >>>>>: " + watch.Elapsed); return finalResult; } - public PrintAllContractCheckout GetPrintAllContractSignDone(string year, string month, long accountId, + public async Task GetPrintAllContractSignDone(string year, string month, long accountId, List workshopList) { var watch = System.Diagnostics.Stopwatch.StartNew(); @@ -2080,75 +2267,94 @@ public class ReportRepository : IReportRepository #region New - var accountWorkshopList = _context.Workshops - .Where(x => workshopList.Contains(x.id)).Include(x => x.LeftWorks.Where(left => - left.StartWorkDate <= nextMonthEnd && left.LeftWorkDate > nextMonthStart)) - .Include(x => x.Contracts2.Where(contract => - contract.ContarctStart.Date <= nextMonthEnd.Date && contract.ContractEnd.Date > nextMonthStart.Date && - contract.IsActiveString == "true")).ToList(); + //var accountWorkshopList = _context.Workshops + // .Where(x => workshopList.Contains(x.id)).Include(x => x.LeftWorks.Where(left => + // left.StartWorkDate <= nextMonthEnd && left.LeftWorkDate > nextMonthStart)) + // .Include(x => x.Contracts2.Where(contract => + // contract.ContarctStart.Date <= nextMonthEnd.Date && contract.ContractEnd.Date > nextMonthStart.Date && + // contract.IsActiveString == "true")).ToList(); - var notCompletedWorkshops = accountWorkshopList.Select(workshop => - { - - var contractSigned = workshop.Contracts2.Count(x => x.Signature == "1"); - var contractCreated = workshop.Contracts2.Count(); - int contractSignedPercent = 0; - if (contractSigned > 0) - { - contractSignedPercent = workshop.Contracts2.Any(x => x.Signature == "0") ? ((contractSigned * 100) / contractCreated) : 100; - } - else - { - contractSignedPercent = 0; - } + //var notCompletedWorkshops = accountWorkshopList.Select(workshop => + // { - if (contractSignedPercent < 100 && contractCreated > 0) - { - var contractEmployeeIds = workshop.Contracts2.Where(x => x.Signature == "0") - .Select(x => x.EmployeeId).ToList(); - var lefts = workshop.LeftWorks.Select(x => x.EmployeeId).Distinct().ToList(); - var contractNotNullEmployeeId = lefts.Where(x => contractEmployeeIds.Contains(x)).ToList(); - var employeeNotDone = - workshop.Contracts2.Where(x => x.Signature == "0" && contractNotNullEmployeeId.Contains(x.EmployeeId)).Select(l => new EmployeeNotDone() - { - Id = l.EmployeeId, - EmployeeFullName = workshop.LeftWorks.FirstOrDefault(x => x.EmployeeId == l.EmployeeId)!.EmployeeFullName, + // var contractSigned = workshop.Contracts2.Count(x => x.Signature == "1"); + // var contractCreated = workshop.Contracts2.Count(); + // int contractSignedPercent = 0; + // if (contractSigned > 0) + // { + // contractSignedPercent = workshop.Contracts2.Any(x => x.Signature == "0") ? ((contractSigned * 100) / contractCreated) : 100; + // } + // else + // { + // contractSignedPercent = 0; + // } - }).ToList(); - return new workshopSearch() - { - Id = workshop.id, - WorkshopFullName = workshop.WorkshopFullName, - ArchiveCode = workshop.ArchiveCode, - ContractSignPercent = contractSignedPercent, - EmployeeNotDones = employeeNotDone - }; - } - else - { - return null; - } - }).Where(x => x != null) - .OrderBy(x => x.ContractSignPercent) - .ToList(); + // if (contractSignedPercent < 100 && contractCreated > 0) + // { + // var contractEmployeeIds = workshop.Contracts2.Where(x => x.Signature == "0") + // .Select(x => x.EmployeeId).ToList(); + // var lefts = workshop.LeftWorks.Select(x => x.EmployeeId).Distinct().ToList(); + // var contractNotNullEmployeeId = lefts.Where(x => contractEmployeeIds.Contains(x)).ToList(); + // var employeeNotDone = + // workshop.Contracts2.Where(x => x.Signature == "0" && contractNotNullEmployeeId.Contains(x.EmployeeId)).Select(l => new EmployeeNotDone() + // { + // Id = l.EmployeeId, + // EmployeeFullName = workshop.LeftWorks.FirstOrDefault(x => x.EmployeeId == l.EmployeeId)!.EmployeeFullName, + + // }).ToList(); + // return new workshopSearch() + // { + // Id = workshop.id, + // WorkshopFullName = workshop.WorkshopFullName, + // ArchiveCode = workshop.ArchiveCode, + // ContractSignPercent = contractSignedPercent, + // EmployeeNotDones = employeeNotDone + // }; + // } + // else + // { + // return null; + // } + // }).Where(x => x != null) + // .OrderBy(x => x.ContractSignPercent) + // .ToList(); #endregion + var getAllWorkshopContractToBe = GetWorkshopContractSignDone(year, month, accountId, workshopList).GetAwaiter().GetResult(); + var workshopSearch = getAllWorkshopContractToBe.WorkshopSearches.Where(x => x.ContractSignPercent < 100).ToList(); + var workshopFinalResult = new List(); + foreach (var item in workshopSearch) + { + var employeeNotDone = GetEmployeeContractSign(year, month, item.Id).GetAwaiter().GetResult(); + var res = new workshopSearch() + { + Id = item.Id, + WorkshopFullName = item.WorkshopFullName, + ArchiveCode = item.ArchiveCode, + ContractSignPercent = item.ContractSignPercent, + EmployeeNotDones = employeeNotDone + }; + workshopFinalResult.Add(res); + } + + var account = await _accountContext.Accounts.FirstOrDefaultAsync(x => x.id == accountId); var finalResult = new PrintAllContractCheckout() { AccountId = accountId, - AccountFullName = _accountContext.Accounts.FirstOrDefault(x => x.id == accountId)?.Fullname, + AccountFullName = account.Fullname, Year = $"{nextMonthStartFa.Year}", Month = nextMonthStartFa.Month.ToFarsiMonthByIntNumber(), ReportType = "امضاء قرارداد", - WorkshopSearches = notCompletedWorkshops, + WorkshopSearches = workshopFinalResult, }; + Console.WriteLine("ajax >>>>>: " + watch.Elapsed); return finalResult; } - public PrintAllContractCheckout GetPrintAllCheckoutDone(string year, string month, long accountId, + public async Task GetPrintAllCheckoutDone(string year, string month, long accountId, List workshopList) { var watch = System.Diagnostics.Stopwatch.StartNew(); @@ -2176,64 +2382,91 @@ public class ReportRepository : IReportRepository #region New - var accountWorkshopList = _context.Workshops - .Where(x => workshopList.Contains(x.id)) - .Include(x => x.LeftWorks.Where(left => - left.StartWorkDate <= currentMonthEnd && left.LeftWorkDate > currentMonthStart)) - .Include(x => x.Checkouts.Where(contract => - contract.ContractStart.Date <= currentMonthEnd.Date && contract.ContractEnd.Date > currentMonthStart.Date && - contract.IsActiveString == "true")).ToList(); + //var accountWorkshopList = _context.Workshops + // .Where(x => workshopList.Contains(x.id)) + // .Include(x => x.LeftWorks.Where(left => + // left.StartWorkDate <= currentMonthEnd && left.LeftWorkDate > currentMonthStart)) + // .Include(x => x.Checkouts.Where(contract => + // contract.ContractStart.Date <= currentMonthEnd.Date && contract.ContractEnd.Date > currentMonthStart.Date && + // contract.IsActiveString == "true")).ToList(); - var notCompletedWorkshops = accountWorkshopList.Select(workshop => - { - var lefts = workshop.LeftWorks.Select(x => new { x.EmployeeId, x.EmployeeFullName }).Distinct().ToList(); - var contractToBe = lefts.Count; - var contractCreated = workshop.Checkouts.Count(); - var createdContractEmployeeIdList = workshop.Checkouts.Select(x => x.EmployeeId).ToList(); - var contractDonePercent = contractToBe > 0 ? ((contractCreated * 100) / contractToBe) : 100; - if (contractDonePercent < 100) - { + //var notCompletedWorkshops = accountWorkshopList.Select(workshop => + //{ + // var lefts = workshop.LeftWorks.Select(x => new { x.EmployeeId, x.EmployeeFullName }).Distinct().ToList(); + // var contractToBe = lefts.Count; + // var contractCreated = workshop.Checkouts.Count(); + // var createdContractEmployeeIdList = workshop.Checkouts.Select(x => x.EmployeeId).ToList(); + // var contractDonePercent = contractToBe > 0 ? ((contractCreated * 100) / contractToBe) : 100; + // if (contractDonePercent < 100) + // { - var employeeNotDone = - lefts.Where(x => !createdContractEmployeeIdList.Contains(x.EmployeeId)).Select(l => new EmployeeNotDone() - { - Id = l.EmployeeId, - EmployeeFullName = l.EmployeeFullName, + // var employeeNotDone = + // lefts.Where(x => !createdContractEmployeeIdList.Contains(x.EmployeeId)).Select(l => new EmployeeNotDone() + // { + // Id = l.EmployeeId, + // EmployeeFullName = l.EmployeeFullName, - }).ToList(); - return new workshopSearch() - { - Id = workshop.id, - WorkshopFullName = workshop.WorkshopFullName, - ArchiveCode = workshop.ArchiveCode, - CheckoutDonePercent = contractDonePercent, - EmployeeNotDones = employeeNotDone - }; - } - else - { - return null; - } - }).Where(x => x != null) - .OrderBy(x => x.ContractDonePercent) - .ToList(); + // }).ToList(); + // return new workshopSearch() + // { + // Id = workshop.id, + // WorkshopFullName = workshop.WorkshopFullName, + // ArchiveCode = workshop.ArchiveCode, + // CheckoutDonePercent = contractDonePercent, + // EmployeeNotDones = employeeNotDone + // }; + // } + // else + // { + // return null; + // } + //}).Where(x => x != null) + // .OrderBy(x => x.ContractDonePercent) + // .ToList(); #endregion + var getAllWorkshopContractToBe = GetWorkshopCheckoutDone(year, month, accountId, workshopList).GetAwaiter().GetResult(); + var workshopSearch = getAllWorkshopContractToBe.WorkshopSearches.Where(x => x.CheckoutDonePercent < 100).ToList(); + var workshopFinalResult = new List(); + foreach (var item in workshopSearch) + { + var employeeNotDone = GetEmployeeCheckout(year, month, item.Id).GetAwaiter().GetResult(); + var res = new workshopSearch() + { + Id = item.Id, + WorkshopFullName = item.WorkshopFullName, + ArchiveCode = item.ArchiveCode, + CheckoutDonePercent = item.CheckoutDonePercent, + EmployeeNotDones = employeeNotDone + }; + workshopFinalResult.Add(res); + } + + var account = await _accountContext.Accounts.FirstOrDefaultAsync(x => x.id == accountId); var finalResult = new PrintAllContractCheckout() { AccountId = accountId, - AccountFullName = _accountContext.Accounts.FirstOrDefault(x => x.id == accountId)?.Fullname, + AccountFullName = account.Fullname, Year = year, Month = month.ToFarsiMonthByNumber(), ReportType = "تنظیم تصفیه حساب", - WorkshopSearches = notCompletedWorkshops, + WorkshopSearches = workshopFinalResult, }; + //var finalResult = new PrintAllContractCheckout() + //{ + // AccountId = accountId, + // AccountFullName = _accountContext.Accounts.FirstOrDefault(x => x.id == accountId)?.Fullname, + // Year = year, + // Month = month.ToFarsiMonthByNumber(), + // ReportType = "تنظیم تصفیه حساب", + // WorkshopSearches = notCompletedWorkshops, + //}; Console.WriteLine("ajax >>>>>: " + watch.Elapsed); return finalResult; } - public PrintAllContractCheckout GetPrintAllCheckoutSignDone(string year, string month, long accountId, + public async Task GetPrintAllCheckoutSignDone(string year, string month, long accountId, List workshopList) { var watch = System.Diagnostics.Stopwatch.StartNew(); @@ -2261,55 +2494,84 @@ public class ReportRepository : IReportRepository #region New - var accountWorkshopList = _context.Workshops - .Where(x => workshopList.Contains(x.id)) - .Include(x => x.Checkouts.Where(contract => - contract.ContractStart.Date <= currentMonthEnd.Date && contract.ContractEnd.Date > currentMonthStart.Date && - contract.IsActiveString == "true")).ToList(); + //var accountWorkshopList = _context.Workshops + // .Where(x => workshopList.Contains(x.id)) + // .Include(x => x.Checkouts.Where(contract => + // contract.ContractStart.Date <= currentMonthEnd.Date && contract.ContractEnd.Date > currentMonthStart.Date && + // contract.IsActiveString == "true")).ToList(); - var notCompletedWorkshops = accountWorkshopList.Select(workshop => - { - var checkoutSigned = workshop.Checkouts.Count(x => x.Signature == "1"); - var checkoutCreated = workshop.Checkouts.Count(); + //var notCompletedWorkshops = accountWorkshopList.Select(workshop => + // { + // var checkoutSigned = workshop.Checkouts.Count(x => x.Signature == "1"); + // var checkoutCreated = workshop.Checkouts.Count(); - var contractSignedPercent = workshop.Checkouts.Any(x => x.Signature == "0") ? ((checkoutSigned * 100) / checkoutCreated) : 100; - if (contractSignedPercent < 100 && checkoutCreated > 0) - { + // var contractSignedPercent = workshop.Checkouts.Any(x => x.Signature == "0") ? ((checkoutSigned * 100) / checkoutCreated) : 100; + // if (contractSignedPercent < 100 && checkoutCreated > 0) + // { - var employeeNotDone = - workshop.Checkouts.Where(x => x.Signature == "0").Select(l => new EmployeeNotDone() - { - Id = l.EmployeeId, - EmployeeFullName = l.EmployeeFullName, + // var employeeNotDone = + // workshop.Checkouts.Where(x => x.Signature == "0").Select(l => new EmployeeNotDone() + // { + // Id = l.EmployeeId, + // EmployeeFullName = l.EmployeeFullName, - }).ToList(); - return new workshopSearch() - { - Id = workshop.id, - WorkshopFullName = workshop.WorkshopFullName, - ArchiveCode = workshop.ArchiveCode, - CheckoutSignPercent = contractSignedPercent, - EmployeeNotDones = employeeNotDone - }; - } - else - { - return null; - } - }).Where(x => x != null) - .OrderBy(x => x.CheckoutSignPercent) - .ToList(); + // }).ToList(); + // return new workshopSearch() + // { + // Id = workshop.id, + // WorkshopFullName = workshop.WorkshopFullName, + // ArchiveCode = workshop.ArchiveCode, + // CheckoutSignPercent = contractSignedPercent, + // EmployeeNotDones = employeeNotDone + // }; + // } + // else + // { + // return null; + // } + // }).Where(x => x != null) + // .OrderBy(x => x.CheckoutSignPercent) + // .ToList(); #endregion + + var getAllWorkshopContractToBe = GetWorkshopCheckoutSignDone(year, month, accountId, workshopList).GetAwaiter().GetResult(); + var workshopSearch = getAllWorkshopContractToBe.WorkshopSearches.Where(x => x.CheckoutSignPercent < 100).ToList(); + var workshopFinalResult = new List(); + foreach (var item in workshopSearch) + { + var employeeNotDone = GetEmployeeCheckoutSign(year, month, item.Id).GetAwaiter().GetResult(); + var res = new workshopSearch() + { + Id = item.Id, + WorkshopFullName = item.WorkshopFullName, + ArchiveCode = item.ArchiveCode, + CheckoutSignPercent = item.CheckoutSignPercent, + EmployeeNotDones = employeeNotDone + + }; + workshopFinalResult.Add(res); + } + + var account = await _accountContext.Accounts.FirstOrDefaultAsync(x => x.id == accountId); var finalResult = new PrintAllContractCheckout() { AccountId = accountId, - AccountFullName = _accountContext.Accounts.FirstOrDefault(x => x.id == accountId)?.Fullname, + AccountFullName = account.Fullname, Year = year, Month = month.ToFarsiMonthByNumber(), ReportType = "امضاء تصفیه حساب", - WorkshopSearches = notCompletedWorkshops, + WorkshopSearches = workshopFinalResult, }; + //var finalResult = new PrintAllContractCheckout() + //{ + // AccountId = accountId, + // AccountFullName = _accountContext.Accounts.FirstOrDefault(x => x.id == accountId)?.Fullname, + // Year = year, + // Month = month.ToFarsiMonthByNumber(), + // ReportType = "امضاء تصفیه حساب", + // WorkshopSearches = notCompletedWorkshops, + //}; Console.WriteLine("ajax >>>>>: " + watch.Elapsed); return finalResult; } diff --git a/ServiceHost/Areas/Admin/Pages/Company/Reports/Index.cshtml b/ServiceHost/Areas/Admin/Pages/Company/Reports/Index.cshtml index 8fabbd86..379512f5 100644 --- a/ServiceHost/Areas/Admin/Pages/Company/Reports/Index.cshtml +++ b/ServiceHost/Areas/Admin/Pages/Company/Reports/Index.cshtml @@ -287,7 +287,7 @@

- @Model.ContrcatDone : کل + @Model.ContractSignToBe : کل

@Model.ContractSignDone : انجام شده @@ -353,7 +353,7 @@

- @Model.CheckoutDone : کل + @Model.CheckoutSignToBe : کل

@Model.CheckoutSignDone : انجام شده diff --git a/ServiceHost/Areas/Admin/Pages/Company/Reports/Index.cshtml.cs b/ServiceHost/Areas/Admin/Pages/Company/Reports/Index.cshtml.cs index faf5d422..9108c175 100644 --- a/ServiceHost/Areas/Admin/Pages/Company/Reports/Index.cshtml.cs +++ b/ServiceHost/Areas/Admin/Pages/Company/Reports/Index.cshtml.cs @@ -1,4 +1,5 @@ using _0_Framework.Application; +using AccountMangement.Infrastructure.EFCore; using CompanyManagment.App.Contracts.Report; using CompanyManagment.App.Contracts.Workshop; using CompanyManagment.App.Contracts.YearlySalary; @@ -42,6 +43,7 @@ public class IndexModel : PageModel public int ContrcatDone { get; set; } public int ContractSignNotDone { get; set; } public int ContractSignDone { get; set; } + public int ContractSignToBe { get; set; } //تصفیه public int AllCheckout { get; set; } @@ -49,8 +51,9 @@ public class IndexModel : PageModel public int CheckoutDone { get; set; } public int CheckoutSignNotDone { get; set; } public int CheckoutSignDone { get; set; } + public int CheckoutSignToBe { get; set; } - public async Task OnGet(string year, string month) + public async Task OnGet(string year, string month) { YearlyList = _yearlySalaryApplication.GetYears(); var allReports = await _reportApplication.GetAllReports(year, month); @@ -73,19 +76,23 @@ public class IndexModel : PageModel ContrcatDone = allReports.ContrcatDone; ContractSignNotDone = allReports.ContractSignNotDone; ContractSignDone = allReports.ContractSignDone; - AllCheckout = allReports.AllCheckout; + ContractSignToBe = allReports.ContractSignToBe; + + AllCheckout = allReports.AllCheckout; CheckoutNotDone = allReports.CheckoutNotDone; CheckoutDone = allReports.CheckoutDone; CheckoutSignNotDone = allReports.CheckoutSignNotDone; CheckoutSignDone = allReports.CheckoutSignDone; - + CheckoutSignToBe = allReports.CheckoutSignToBe; + + } #region workshopFirstLoad public IActionResult OnGetWorkshopContractDone(string year, string month, long accountId, List workshopList) { - var res = _reportApplication.GetWorkshopContractDone(year, month, accountId, workshopList); + var res = _reportApplication.GetWorkshopContractDone(year, month, accountId, workshopList).GetAwaiter().GetResult(); return new JsonResult(new { success = true, @@ -96,7 +103,7 @@ public class IndexModel : PageModel public IActionResult OnGetWorkshopContractSignDone(string year, string month, long accountId, List workshopList) { - var res = _reportApplication.GetWorkshopContractSignDone(year, month, accountId, workshopList); + var res = _reportApplication.GetWorkshopContractSignDone(year, month, accountId, workshopList).GetAwaiter().GetResult(); return new JsonResult(new { success = true, @@ -107,7 +114,7 @@ public class IndexModel : PageModel public IActionResult OnGetWorkshopCheckoutDone(string year, string month, long accountId, List workshopList) { - var res = _reportApplication.GetWorkshopCheckoutDone(year, month, accountId, workshopList); + var res = _reportApplication.GetWorkshopCheckoutDone(year, month, accountId, workshopList).GetAwaiter().GetResult(); return new JsonResult(new { success = true, @@ -118,7 +125,7 @@ public class IndexModel : PageModel public IActionResult OnGetWorkshopCheckoutSignDone(string year, string month, long accountId, List workshopList) { - var res = _reportApplication.GetWorkshopCheckoutSignDone(year, month, accountId, workshopList); + var res = _reportApplication.GetWorkshopCheckoutSignDone(year, month, accountId, workshopList).GetAwaiter().GetResult(); return new JsonResult(new { success = true, @@ -133,7 +140,7 @@ public class IndexModel : PageModel public IActionResult OnGetEmployeeContract(string year, string month, long workshopId) { - var res = _reportApplication.GetEmployeeContract(year, month, workshopId); + var res = _reportApplication.GetEmployeeContract(year, month, workshopId).GetAwaiter().GetResult(); return new JsonResult(new { success = true, @@ -143,7 +150,7 @@ public class IndexModel : PageModel public IActionResult OnGetEmployeeContractSign(string year, string month, long workshopId) { - var res = _reportApplication.GetEmployeeContractSign(year, month, workshopId); + var res = _reportApplication.GetEmployeeContractSign(year, month, workshopId).GetAwaiter().GetResult(); return new JsonResult(new { success = true, @@ -153,7 +160,7 @@ public class IndexModel : PageModel public IActionResult OnGetEmployeeCheckout(string year, string month, long workshopId) { - var res = _reportApplication.GetEmployeeCheckout(year, month, workshopId); + var res = _reportApplication.GetEmployeeCheckout(year, month, workshopId).GetAwaiter().GetResult(); return new JsonResult(new { success = true, @@ -163,7 +170,7 @@ public class IndexModel : PageModel public IActionResult OnGetEmployeeCheckoutSign(string year, string month, long workshopId, long accountId) { - var res = _reportApplication.GetEmployeeCheckoutSign(year, month, workshopId); + var res = _reportApplication.GetEmployeeCheckoutSign(year, month, workshopId).GetAwaiter().GetResult(); return new JsonResult(new { success = true, @@ -180,14 +187,14 @@ public class IndexModel : PageModel { var workshopIds = Tools.ExtractNumbers(workshopList); - var res = _reportApplication.GetPrintAllContractDone(year, month, accountId, workshopIds); + var res = _reportApplication.GetPrintAllContractDone(year, month, accountId, workshopIds).GetAwaiter().GetResult(); return Partial("PrintAll", res); } public IActionResult OnGetPrintAllContractSignDone(string year, string month, long accountId, string workshopList) { var workshopIds = Tools.ExtractNumbers(workshopList); - var res = _reportApplication.GetPrintAllContractSignDone(year, month, accountId, workshopIds); + var res = _reportApplication.GetPrintAllContractSignDone(year, month, accountId, workshopIds).GetAwaiter().GetResult(); return Partial("PrintAll", res); } @@ -195,14 +202,14 @@ public class IndexModel : PageModel { var workshopIds = Tools.ExtractNumbers(workshopList); - var res = _reportApplication.GetPrintAllCheckoutDone(year, month, accountId, workshopIds); + var res = _reportApplication.GetPrintAllCheckoutDone(year, month, accountId, workshopIds).GetAwaiter().GetResult(); return Partial("PrintAll", res); } public IActionResult OnGetPrintAllCheckoutSignDone(string year, string month, long accountId, string workshopList) { var workshopIds = Tools.ExtractNumbers(workshopList); - var res = _reportApplication.GetPrintAllCheckoutSignDone(year, month, accountId, workshopIds); + var res = _reportApplication.GetPrintAllCheckoutSignDone(year, month, accountId, workshopIds).GetAwaiter().GetResult(); return Partial("PrintAll", res); } //================Employee @@ -211,7 +218,7 @@ public class IndexModel : PageModel public IActionResult OnGetPrintEmployeeContract(string year, string month, long workshopId, string accountFullName) { var workshop = _workshopApplication.GetDetails(workshopId); - var res = _reportApplication.GetEmployeeContract(year, month, workshopId); + var res = _reportApplication.GetEmployeeContract(year, month, workshopId).GetAwaiter().GetResult(); var next = $"{year}/{month}/01"; var y = Convert.ToInt32(year); var m = Convert.ToInt32(month); @@ -235,7 +242,7 @@ public class IndexModel : PageModel string accountFullName) { var workshop = _workshopApplication.GetDetails(workshopId); - var res = _reportApplication.GetEmployeeContractSign(year, month, workshopId); + var res = _reportApplication.GetEmployeeContractSign(year, month, workshopId).GetAwaiter().GetResult(); var next = $"{year}/{month}/01"; var y = Convert.ToInt32(year); var m = Convert.ToInt32(month); @@ -258,7 +265,7 @@ public class IndexModel : PageModel public IActionResult OnGetPrintEmployeeCheckout(string year, string month, long workshopId, string accountFullName) { var workshop = _workshopApplication.GetDetails(workshopId); - var res = _reportApplication.GetEmployeeCheckout(year, month, workshopId); + var res = _reportApplication.GetEmployeeCheckout(year, month, workshopId).GetAwaiter().GetResult(); var final = new PrintEmployeeNotDone { @@ -277,7 +284,7 @@ public class IndexModel : PageModel string accountFullName) { var workshop = _workshopApplication.GetDetails(workshopId); - var res = _reportApplication.GetEmployeeCheckoutSign(year, month, workshopId); + var res = _reportApplication.GetEmployeeCheckoutSign(year, month, workshopId).GetAwaiter().GetResult(); var final = new PrintEmployeeNotDone {