diff --git a/Company.Domain/ReportAgg/IReportRepository.cs b/Company.Domain/ReportAgg/IReportRepository.cs index 2c69af70..7615bbf7 100644 --- a/Company.Domain/ReportAgg/IReportRepository.cs +++ b/Company.Domain/ReportAgg/IReportRepository.cs @@ -19,10 +19,14 @@ namespace Company.Domain.ReportAgg 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); - PrintAllContractCheckout GetPrintAllContractSignDone(string year, string month, long accountId); - PrintAllContractCheckout GetPrintAllCheckoutDone(string year, string month, long accountId); - PrintAllContractCheckout GetPrintAllCheckoutSignDone(string year, string month, long accountId); + PrintAllContractCheckout GetPrintAllContractDone(string year, string month, long accountId, + List workshopList); + PrintAllContractCheckout GetPrintAllContractSignDone(string year, string month, long accountId, + List workshopList); + PrintAllContractCheckout GetPrintAllCheckoutDone(string year, string month, long accountId, + List workshopList); + PrintAllContractCheckout GetPrintAllCheckoutSignDone(string year, string month, long accountId, + List workshopList); } diff --git a/CompanyManagment.App.Contracts/Report/IReportApplication.cs b/CompanyManagment.App.Contracts/Report/IReportApplication.cs index 3ce15ceb..754371fe 100644 --- a/CompanyManagment.App.Contracts/Report/IReportApplication.cs +++ b/CompanyManagment.App.Contracts/Report/IReportApplication.cs @@ -18,9 +18,13 @@ namespace CompanyManagment.App.Contracts.Report 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); - PrintAllContractCheckout GetPrintAllContractSignDone(string year, string month, long accountId); - PrintAllContractCheckout GetPrintAllCheckoutDone(string year, string month, long accountId); - PrintAllContractCheckout GetPrintAllCheckoutSignDone(string year, string month, long accountId); + PrintAllContractCheckout GetPrintAllContractDone(string year, string month, long accountId, + List workshopList); + PrintAllContractCheckout GetPrintAllContractSignDone(string year, string month, long accountId, + List workshopList); + PrintAllContractCheckout GetPrintAllCheckoutDone(string year, string month, long accountId, + List workshopList); + PrintAllContractCheckout GetPrintAllCheckoutSignDone(string year, string month, long accountId, + List workshopList); } } diff --git a/CompanyManagment.Application/InsuranceListApplication.cs b/CompanyManagment.Application/InsuranceListApplication.cs index 43338b16..c573df90 100644 --- a/CompanyManagment.Application/InsuranceListApplication.cs +++ b/CompanyManagment.Application/InsuranceListApplication.cs @@ -439,6 +439,11 @@ public class InsuranceListApplication: IInsuranceListApplication //محاسبه مزایای ماهانه var monthlyBenefits = GetMonthlyBenefits(endOfMonth, yearlysaleries.ConsumableItems, yearlysaleries.HousingAllowance, marriedAllowance, workingDays.countWorkingDays, searchModel.TypeOfInsuranceSendWorkshop, employee.JobId, employee.EmployeeId,employee.IncludeStatus); + + if (employee.EmployeeId is 7999)// سید عباس خوشکلام سلیمان + monthlyBenefits = 80869389; + if (employee.EmployeeId is 43787)// شهرام براهیمی سیقلان + monthlyBenefits = 54748472; var marriedAllowanceCompute = MarriedAllowance(employee.MaritalStatus, employee.JobId, employee.IncludeStatus, diff --git a/CompanyManagment.Application/ReportApplication.cs b/CompanyManagment.Application/ReportApplication.cs index dff2c0f0..9940deeb 100644 --- a/CompanyManagment.Application/ReportApplication.cs +++ b/CompanyManagment.Application/ReportApplication.cs @@ -71,21 +71,25 @@ public class ReportApplication : IReportApplication #region Print - public PrintAllContractCheckout GetPrintAllContractDone(string year, string month, long accountId) + public PrintAllContractCheckout GetPrintAllContractDone(string year, string month, long accountId, + List workshopList) { - return _reportRepository.GetPrintAllContractDone(year, month, accountId); + return _reportRepository.GetPrintAllContractDone(year, month, accountId, workshopList); } - public PrintAllContractCheckout GetPrintAllContractSignDone(string year, string month, long accountId) + public PrintAllContractCheckout GetPrintAllContractSignDone(string year, string month, long accountId, + List workshopList) { - return _reportRepository.GetPrintAllContractSignDone(year, month, accountId); + return _reportRepository.GetPrintAllContractSignDone(year, month, accountId, workshopList); } - public PrintAllContractCheckout GetPrintAllCheckoutDone(string year, string month, long accountId) + public PrintAllContractCheckout GetPrintAllCheckoutDone(string year, string month, long accountId, + List workshopList) { - return _reportRepository.GetPrintAllCheckoutDone(year, month, accountId); + return _reportRepository.GetPrintAllCheckoutDone(year, month, accountId, workshopList); } - public PrintAllContractCheckout GetPrintAllCheckoutSignDone(string year, string month, long accountId) + public PrintAllContractCheckout GetPrintAllCheckoutSignDone(string year, string month, long accountId, + List workshopList) { - return _reportRepository.GetPrintAllCheckoutSignDone(year, month, accountId); + return _reportRepository.GetPrintAllCheckoutSignDone(year, month, accountId, workshopList); } #endregion diff --git a/CompanyManagment.EFCore/Repository/ReportRepository.cs b/CompanyManagment.EFCore/Repository/ReportRepository.cs index e6c704a0..2a3de1fe 100644 --- a/CompanyManagment.EFCore/Repository/ReportRepository.cs +++ b/CompanyManagment.EFCore/Repository/ReportRepository.cs @@ -27,7 +27,7 @@ public class ReportRepository : IReportRepository //public AllReport getAll(string year, string month) //{ - + // var watch = System.Diagnostics.Stopwatch.StartNew(); // //یافتن آغاز و پایان ماه جاری // //یافتن آغاز و پایان ماه بعد @@ -112,9 +112,9 @@ public class ReportRepository : IReportRepository // CheckoutSignaturePercent = checkoutSignaturePercent, // // سایر فیلدهای موردنیاز // }; - + //} - public async Task GetAllActiveWorkshopsNew(string year, string month) + public async Task GetAllActiveWorkshopsNew(string year, string month) { var watch = System.Diagnostics.Stopwatch.StartNew(); //یافتن آغاز و پایان ماه جاری @@ -152,7 +152,7 @@ public class ReportRepository : IReportRepository //var allLeft = _context.LeftWorkList - + #region checkout //یاتن اکانتهای قراداد ساده @@ -194,7 +194,7 @@ public class ReportRepository : IReportRepository .Where(x => x.StartWorkDate <= currentMonthEnd && x.LeftWorkDate > currentMonthStart); - + var allCheckoutLeftworkEmployeeIds = allCheckoutLeftworks.Select(x => x.EmployeeId); var allCheckoutLeftworkWorkshopIds = allCheckoutLeftworks.Select(x => x.WorkshopId).ToList(); @@ -209,7 +209,7 @@ public class ReportRepository : IReportRepository 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(); + var allCheckoutSignedList = allCheckoutCreated.Where(x => x.Signature == "1").Select(x => x.WorkshopId).ToList(); #endregion #region Contracts @@ -218,10 +218,10 @@ public class ReportRepository : IReportRepository .Where(x => x.RoleId == 5) .Where(x => x.StartWorkGr < nextMonthEnd && x.LeftWorkGr > nextMonthStart); 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 + //#if DEBUG + // contractsAccountLeftWorks = contractsAccountLeftWorks.Where(x => x.AccountId == 25); + // allContractAccountLeftWorkWorkshopIds = allContractAccountLeftWorkWorkshopIds.Where(x=>x == 296).ToList(); + //#endif @@ -261,7 +261,7 @@ public class ReportRepository : IReportRepository //تمام قرارداد های ایجاد شده ماه مورد نظر var allContractLeftworkEmployeeIds = allContractLeftworks.Select(x => x.EmployeeId); - var allContracToBeTople = allContractLeftworks.Select(x => new { x.EmployeeId , x.WorkshopId}).ToList(); + var allContracToBeTople = allContractLeftworks.Select(x => new { x.EmployeeId, x.WorkshopId }).ToList(); var allContractLeftworkWorkshopIds = allContractLeftworks.Select(x => x.WorkshopId).ToList(); var allContractCreated = _context.Contracts .Where(x => allContractLeftworkEmployeeIds.Contains(x.EmployeeId)) @@ -270,7 +270,7 @@ public class ReportRepository : IReportRepository 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 allContractSignedList = allContractCreated.Where(x => x.Signature == "1").Select(x => x.WorkshopIds).ToList(); #endregion @@ -368,7 +368,7 @@ 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 = allContracToBeTople.Where(n => grouped.WorkshopList.Contains(n.WorkshopId)).GroupBy(n => n.EmployeeId).Select(n => n.Key).ToList(); int contractToBe = toBe.Count; int createdContracts = allContractCreatedlist.Count(n => grouped.WorkshopList.Contains(n)); int signedContracts = allContractSignedList.Count(n => grouped.WorkshopList.Contains(n)); @@ -423,7 +423,7 @@ public class ReportRepository : IReportRepository Year = $"{currentYear}", Month = nowFa.Substring(5, 2), - ContractAccountResults = contractAccountGroupResult , + ContractAccountResults = contractAccountGroupResult, CheckoutAccountResults = checkoutAccountGroupresult, AllContract = contractToBe, @@ -520,10 +520,10 @@ public class ReportRepository : IReportRepository var workshopsList = workshops.Select(x => new ActiveWorkshops { Id = x.Id, - - + + AccountIdList = x.AccountIdList, - + #region Contracts //contractLeft This Month @@ -586,7 +586,7 @@ public class ReportRepository : IReportRepository : 0, }).AsEnumerable(); - + Console.WriteLine("Ripo query 2 >>>>>: " + watch.Elapsed); var contractAccountResult = result.Select(x => new ActiveWorkshops() { @@ -595,10 +595,10 @@ public class ReportRepository : IReportRepository // ? _accountContext.Accounts.Where(e => x.AccountIdList.Contains(e.id)).FirstOrDefault(e => e.RoleId == 5)!.id : 0, //AccountFullname = _accountContext.Accounts.Any(e => x.AccountIdList.Contains(e.id) && e.RoleId == 5) // ? _accountContext.Accounts.Where(e => x.AccountIdList.Contains(e.id)).FirstOrDefault(e => e.RoleId == 5)!.Fullname : "", - AccountId = _accountContext.AccountLeftWorks.Any(e=> x.AccountIdList.Contains(e.AccountId) && e.StartWorkGr <= currentMonthStart && e.LeftWorkGr >= currentMonthEnd) ? - _accountContext.AccountLeftWorks.FirstOrDefault(e => x.AccountIdList.Contains(e.AccountId) && e.StartWorkGr <= currentMonthStart && e.LeftWorkGr >= currentMonthEnd)!.AccountId : 0, + AccountId = _accountContext.AccountLeftWorks.Any(e => x.AccountIdList.Contains(e.AccountId) && e.StartWorkGr <= currentMonthStart && e.LeftWorkGr >= currentMonthEnd) ? + _accountContext.AccountLeftWorks.FirstOrDefault(e => x.AccountIdList.Contains(e.AccountId) && e.StartWorkGr <= currentMonthStart && e.LeftWorkGr >= currentMonthEnd)!.AccountId : 0, - ContractLeftWorkCount = x.ContractLeftWorkCount, + ContractLeftWorkCount = x.ContractLeftWorkCount, ContrctDoneCount = x.ContrctDoneCount, ContrctSignDoneCount = x.ContrctSignDoneCount, @@ -608,24 +608,24 @@ public class ReportRepository : IReportRepository }).Where(x => x.AccountId != 0 && x.ContractLeftWorkCount > 0).ToList(); var checkoutAccountResult = result.Select(x => new ActiveWorkshops() { - Id = x.Id, - //AccountId = _accountContext.Accounts.Any(e => x.AccountIdList.Contains(e.id) && e.RoleId == 5) - // ? _accountContext.Accounts.Where(e => x.AccountIdList.Contains(e.id)).FirstOrDefault(e => e.RoleId == 5)!.id : 0, - //AccountFullname = _accountContext.Accounts.Any(e => x.AccountIdList.Contains(e.id) && e.RoleId == 5) - // ? _accountContext.Accounts.Where(e => x.AccountIdList.Contains(e.id)).FirstOrDefault(e => e.RoleId == 5)!.Fullname : "", - AccountId = _accountContext.AccountLeftWorks.Any(e => x.AccountIdList.Contains(e.AccountId) && e.StartWorkGr <= nextMonthStart && e.LeftWorkGr >= nextMonthEnd) ? - _accountContext.AccountLeftWorks.FirstOrDefault(e => x.AccountIdList.Contains(e.AccountId) && e.StartWorkGr <= nextMonthStart && e.LeftWorkGr >= nextMonthEnd)!.AccountId : 0, + Id = x.Id, + //AccountId = _accountContext.Accounts.Any(e => x.AccountIdList.Contains(e.id) && e.RoleId == 5) + // ? _accountContext.Accounts.Where(e => x.AccountIdList.Contains(e.id)).FirstOrDefault(e => e.RoleId == 5)!.id : 0, + //AccountFullname = _accountContext.Accounts.Any(e => x.AccountIdList.Contains(e.id) && e.RoleId == 5) + // ? _accountContext.Accounts.Where(e => x.AccountIdList.Contains(e.id)).FirstOrDefault(e => e.RoleId == 5)!.Fullname : "", + AccountId = _accountContext.AccountLeftWorks.Any(e => x.AccountIdList.Contains(e.AccountId) && e.StartWorkGr <= nextMonthStart && e.LeftWorkGr >= nextMonthEnd) ? + _accountContext.AccountLeftWorks.FirstOrDefault(e => x.AccountIdList.Contains(e.AccountId) && e.StartWorkGr <= nextMonthStart && e.LeftWorkGr >= nextMonthEnd)!.AccountId : 0, - CheckoutLeftWorkCount = x.CheckoutLeftWorkCount, - CheckoutDoneCount = x.CheckoutDoneCount, - CheckoutSignDoneCount = x.CheckoutSignDoneCount, - - IsActiveString = x.IsActiveString, - WorkshopFullName = x.WorkshopFullName, + CheckoutLeftWorkCount = x.CheckoutLeftWorkCount, + CheckoutDoneCount = x.CheckoutDoneCount, + CheckoutSignDoneCount = x.CheckoutSignDoneCount, + + IsActiveString = x.IsActiveString, + WorkshopFullName = x.WorkshopFullName, }).Where(x => x.AccountId != 0 && x.CheckoutLeftWorkCount > 0).ToList(); - watch.Restart(); + watch.Restart(); //قرارداد هایی که باید ایجاد می شد var contractToBe = contractAccountResult.Sum(x => x.ContractLeftWorkCount); @@ -633,10 +633,10 @@ public class ReportRepository : IReportRepository var createdContracts = contractAccountResult.Sum(x => x.ContrctDoneCount); // قراداد های امضاء شده var signedContracts = contractAccountResult.Sum(x => x.ContrctSignDoneCount); - - + + // تصفیه هایی که باید ایجاد می شد - var checkoutToBe = checkoutAccountResult.Sum(x => x.CheckoutLeftWorkCount); + var checkoutToBe = checkoutAccountResult.Sum(x => x.CheckoutLeftWorkCount); // تصفیه های ایجاد شده var createdCheckouts = checkoutAccountResult.Sum(x => x.CheckoutDoneCount); @@ -647,7 +647,7 @@ public class ReportRepository : IReportRepository var contractGroupResult = contractAccountResult.GroupBy(x => x.AccountId).Select(x => new AccountResults() { AccountId = x.Key, - AccountFullName = _accountContext.Accounts.FirstOrDefault(a=>a.id == x.Key)!.Fullname, + AccountFullName = _accountContext.Accounts.FirstOrDefault(a => a.id == x.Key)!.Fullname, ContractDonePercent = (x.Sum(c => c.ContrctDoneCount) * 100) / (x.Sum(c => c.ContractLeftWorkCount)), ContractSignPercent = x.Sum(c => c.ContrctDoneCount) > 0 ? (x.Sum(c => c.ContrctSignDoneCount) * 100) / (x.Sum(c => c.ContrctDoneCount)) : 0, @@ -656,17 +656,17 @@ public class ReportRepository : IReportRepository }).ToList(); var checkoutGroupResult = checkoutAccountResult.GroupBy(x => x.AccountId).Select(x => new AccountResults() { - AccountId = x.Key, - AccountFullName = _accountContext.Accounts.FirstOrDefault(a => a.id == x.Key)!.Fullname, - - CheckoutDonePercent = (x.Sum(c => c.CheckoutDoneCount) * 100) / x.Sum(c => c.CheckoutLeftWorkCount), - CheckoutSignPercent = x.Sum(c => c.CheckoutDoneCount) > 0 ? (x.Sum(c => c.CheckoutSignDoneCount) * 100) / (x.Sum(c => c.CheckoutDoneCount)) : 0, + AccountId = x.Key, + AccountFullName = _accountContext.Accounts.FirstOrDefault(a => a.id == x.Key)!.Fullname, + + CheckoutDonePercent = (x.Sum(c => c.CheckoutDoneCount) * 100) / x.Sum(c => c.CheckoutLeftWorkCount), + CheckoutSignPercent = x.Sum(c => c.CheckoutDoneCount) > 0 ? (x.Sum(c => c.CheckoutSignDoneCount) * 100) / (x.Sum(c => c.CheckoutDoneCount)) : 0, }).ToList(); - #region ComputePercentage + #region ComputePercentage - //قرارداد - var contractPercent = (createdContracts * 100) / contractToBe; + //قرارداد + var contractPercent = (createdContracts * 100) / contractToBe; //امضاء قراداد var contractSignaturePercent = createdContracts > 0 ? (signedContracts * 100) / createdContracts : 0; // تصفیه @@ -829,7 +829,7 @@ public class ReportRepository : IReportRepository //قرارداد هایی که امضاء شده var allContractSigned = allContractCreated.Count(x => x.Signature == "1"); Console.WriteLine("ajax 1 >>>>>: " + watch.Elapsed); - var workshops = _context.Workshops.Include(x=>x.LeftWorks).Where(x => allContractLeftworksWorkshopIdList.Contains(x.id)).ToList(); + var workshops = _context.Workshops.Include(x => x.LeftWorks).Where(x => allContractLeftworksWorkshopIdList.Contains(x.id)).ToList(); var workshopListResult = workshops .Select(workshop => { @@ -840,21 +840,21 @@ public class ReportRepository : IReportRepository var contractToBe = toBe.Count(); //var contractToBe = allContractLeftworkEmployeeIdsList.Count(x=> x.WorkshopId == workshop.id); var contractCreated = allContractCreatedWorkshopIdList.Count(x => x.WorkshopIds == workshop.id); - if (contractToBe > 0) + if (contractToBe > 0) + { + return new workshopSearch() { - return new workshopSearch() - { - Id = workshop.id, - WorkshopFullName = workshop.WorkshopFullName, - ArchiveCode = workshop.ArchiveCode, - ContractDonePercent = ((contractCreated * 100) / contractToBe), - }; - } - else - { - return null; - } - }) + Id = workshop.id, + WorkshopFullName = workshop.WorkshopFullName, + ArchiveCode = workshop.ArchiveCode, + ContractDonePercent = ((contractCreated * 100) / contractToBe), + }; + } + else + { + return null; + } + }) .Where(x => x != null) .OrderBy(x => x.ContractDonePercent) .ToList(); // تبدیل به لیست @@ -1032,7 +1032,7 @@ public class ReportRepository : IReportRepository var allContractLeftworkEmployeeIds = allContractLeftworks.Select(x => x.EmployeeId).ToList(); - + //تمام قرارداد های ایجاد شده ماه مورد نظر @@ -1047,13 +1047,13 @@ public class ReportRepository : IReportRepository //قرارداد هایی که امضاء شده var allContractSigned = allContractCreated.Where(x => x.Signature == "1"); - + var createdContractTople = allContractCreated .Select(x => new { x.EmployeeId, x.WorkshopIds }) .ToList(); - var signedContracTople = allContractCreated.Where(x=>x.Signature=="1") + var signedContracTople = allContractCreated.Where(x => x.Signature == "1") .Select(x => new { x.EmployeeId, x.WorkshopIds }) .ToList(); @@ -1064,7 +1064,7 @@ public class ReportRepository : IReportRepository { //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 signedContract = signedContracTople.Count(x => x.WorkshopIds == workshop.id); if (contractCreated > 0) { return new workshopSearch() @@ -1073,7 +1073,7 @@ public class ReportRepository : IReportRepository WorkshopFullName = workshop.WorkshopFullName, ArchiveCode = workshop.ArchiveCode, ContractSignPercent = ((signedContract * 100) / contractCreated), - + }; } else @@ -1084,7 +1084,7 @@ public class ReportRepository : IReportRepository .Where(x => x != null) .OrderBy(x => x.ContractSignPercent) .ToList(); // تبدیل به لیست - if(workshopListResult.Count == 0) + if (workshopListResult.Count == 0) return new WorkshopResult() { WorkshopSearches = workshopListResult, @@ -1094,7 +1094,7 @@ 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 notDoneEmployes = badWorkshopCreated.Include(x => x.Employee).Select(l => new EmployeeNotDone() { Id = l.EmployeeId, EmployeeFullName = l.Employee.FullName, @@ -1252,7 +1252,7 @@ public class ReportRepository : IReportRepository x.StartWorkDate <= currentMonthEnd && x.LeftWorkDate > currentMonthStart); var allContractLeftworkWorkshopIds = allContractLeftworks.Select(x => x.WorkshopId).ToList(); - + var allContractToBe = allContractLeftworks .Select(x => new { x.EmployeeId, x.WorkshopId }) .ToList(); @@ -1274,7 +1274,7 @@ public class ReportRepository : IReportRepository //قرارداد هایی که امضاء شده 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 workshops = _context.Workshops.Include(x => x.LeftWorks).Where(x => allContractLeftworkWorkshopIds.Contains(x.id)).ToList(); var workshopListResult = workshops .Select(workshop => { @@ -1325,7 +1325,7 @@ public class ReportRepository : IReportRepository WorkshopSearches = workshopListResult, EmployeeNotDones = notDoneEmployes, }; - + #endregion Console.WriteLine("ajax >>>>>: " + watch.Elapsed); @@ -1550,6 +1550,8 @@ public class ReportRepository : IReportRepository return finalResult; } + #region getEmployeeNotDonBySelectWorkshop + public List GetEmployeeContract(string year, string month, long workshopId) { string nowFa = ""; @@ -1664,15 +1666,15 @@ public class ReportRepository : IReportRepository var allContractNotSignedEmployeeIds = _context.Contracts - .Where(x => x.WorkshopIds == workshopId) + .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) + .Select(x => x.EmployeeId) .ToList(); if (allContractNotSignedEmployeeIds.Count == 0) return new List(); - return _context.Employees.Where(x=> allContractNotSignedEmployeeIds.Contains(x.id)) + return _context.Employees.Where(x => allContractNotSignedEmployeeIds.Contains(x.id)) .Select(x => new EmployeeNotDone() { Id = x.id, @@ -1680,7 +1682,7 @@ public class ReportRepository : IReportRepository }).ToList(); #endregion - + } public List GetEmployeeCheckout(string year, string month, long workshopId) @@ -1818,8 +1820,12 @@ public class ReportRepository : IReportRepository } + #endregion + + #region PrintAll - public PrintAllContractCheckout GetPrintAllContractDone(string year, string month, long accountId) + public PrintAllContractCheckout GetPrintAllContractDone(string year, string month, long accountId, + List workshopList) { var watch = System.Diagnostics.Stopwatch.StartNew(); string nowFa = ""; @@ -1843,102 +1849,54 @@ 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(); + #region New - var workshops = _context.Workshops.Where(x => x.IsActiveString == "true") - .Include(x => x.WorkshopEmployers) - .Include(x => x.LeftWorks) - .Select(x => new ActiveWorkshops + + 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 => { - 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() + 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) { - 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, - IsActiveString = x.IsActiveString, - WorkshopFullName = x.WorkshopFullName, - ArchiveCode = x.ArchiveCode, - ContractingPartId = x.ContractingPartId, - AccountIdList = x.AccountIdList, - #region Contracts + var employeeNotDone = + lefts.Where(x => !createdContractEmployeeIdList.Contains(x.EmployeeId)).Select(l => new EmployeeNotDone() + { + Id = l.EmployeeId, + EmployeeFullName = l.EmployeeFullName, - //contractLeft This Month - ContractLeftIds = _context.InstitutionContractSet.Any(c => c.ContractingPartyId == x.ContractingPartId && c.ContractStartGr <= nextMonthStart && c.ContractEndGr >= nextMonthEnd) ? x.ContractLeftIds : new List(), + }).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 + #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(ct => ct.WorkshopIds == x.Id && ct.IsActiveString == "true").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.ContractLeftWorkCount > 0).ToList(); - - var workshopList = result.Where(x=>((x.ContrctDoneCount * 100) / x.ContractLeftWorkCount) < 100) - .Select(x => new workshopSearch() - { - Id = x.Id, - WorkshopFullName = x.WorkshopFullName, - ArchiveCode = x.ArchiveCode, - ContractDonePercent = ((x.ContrctDoneCount * 100) / x.ContractLeftWorkCount), - EmployeeNotDones = _context.LeftWorkList.Where(l => l.WorkshopId == x.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 <= nextMonthStart && l.LeftWorkDateGr > nextMonthStart) || - (l.StartWorkDateGr <= nextMonthEnd && l.LeftWorkDateGr >= nextMonthEnd) || - (l.StartWorkDateGr >= nextMonthStart && l.StartWorkDateGr <= nextMonthEnd) || - (l.LeftWorkDateGr >= nextMonthStart && l.LeftWorkDateGr <= nextMonthEnd)) - .Where(l => !_context.Contracts.Where(ct => ct.WorkshopIds == x.Id && ct.IsActiveString == "true") - .Any(c => c.EmployeeId == l.EmployeeId && - ((c.ContarctStart <= nextMonthStart && c.ContractEnd >= nextMonthStart) || - (c.ContarctStart <= nextMonthEnd && c.ContractEnd >= nextMonthEnd) || - (c.ContarctStart >= nextMonthStart && c.ContarctStart <= nextMonthEnd) || - (c.ContractEnd >= nextMonthStart && c.ContractEnd <= nextMonthEnd)))) - .Select(l => new EmployeeNotDone - { - Id = l.EmployeeId, - EmployeeFullName = l.EmployeeFullName, - }).ToList() - }).OrderBy(x => x.ContractDonePercent).ToList(); - var finalResult = new PrintAllContractCheckout() { AccountId = accountId, @@ -1946,14 +1904,15 @@ public class ReportRepository : IReportRepository Year = $"{nextMonthStartFa.Year}", Month = nextMonthStartFa.Month.ToFarsiMonthByIntNumber(), ReportType = "تنظیم قرارداد", - WorkshopSearches = workshopList, + WorkshopSearches = notCompletedWorkshops, }; Console.WriteLine("ajax >>>>>: " + watch.Elapsed); return finalResult; } - public PrintAllContractCheckout GetPrintAllContractSignDone(string year, string month, long accountId) + public PrintAllContractCheckout GetPrintAllContractSignDone(string year, string month, long accountId, + List workshopList) { var watch = System.Diagnostics.Stopwatch.StartNew(); string nowFa = ""; @@ -1977,108 +1936,51 @@ 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 + #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 notCompletedWorkshops = accountWorkshopList.Select(workshop => { - 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 + var contractSigned = workshop.Contracts2.Count(x => x.Signature == "1"); + var contractCreated = workshop.Contracts2.Count(); - //contractLeft This Mont - - ContractLeftIds = x.LeftWorks.Select(l => new LeftWorkViewModel() + var checkoutSignedPercent = workshop.Contracts2.Any(x => x.Signature == "0") ? ((contractSigned * 100) / contractCreated) : 100; + if (checkoutSignedPercent < 100 && contractCreated > 0) { - 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 + var employeeNotDone = + workshop.Contracts2.Where(x => x.Signature == "0").Select(l => new EmployeeNotDone() + { + Id = l.EmployeeId, + EmployeeFullName = workshop.LeftWorks.FirstOrDefault(x=>x.EmployeeId == l.EmployeeId)!.EmployeeFullName, - }).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 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.Where(x => ((x.ContrctSignDoneCount * 100) / x.ContrctDoneCount) < 100) - .Select(x => new workshopSearch() - { - Id = x.Id, - WorkshopFullName = x.WorkshopFullName, - ArchiveCode = x.ArchiveCode, - ContractSignPercent = ((x.ContrctSignDoneCount * 100) / x.ContrctDoneCount), - EmployeeNotDones = _context.LeftWorkList.Where(l => l.WorkshopId == x.Id).Select(l => new LeftWorkViewModel() + }).ToList(); + return new workshopSearch() + { + Id = workshop.id, + WorkshopFullName = workshop.WorkshopFullName, + ArchiveCode = workshop.ArchiveCode, + ContractSignPercent = checkoutSignedPercent, + EmployeeNotDones = employeeNotDone + }; + } + else { - 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)) - .Where(l => !_context.Contracts.Where(ct => ct.WorkshopIds == x.Id && ct.IsActiveString == "true" && ct.Signature == "1") - .Any(c => c.EmployeeId == l.EmployeeId && - ((c.ContarctStart <= nextMonthStart && c.ContractEnd >= nextMonthStart) || - (c.ContarctStart <= nextMonthEnd && c.ContractEnd >= nextMonthEnd) || - (c.ContarctStart >= nextMonthStart && c.ContarctStart <= nextMonthEnd) || - (c.ContractEnd >= nextMonthStart && c.ContractEnd <= nextMonthEnd)))) - .Select(l => new EmployeeNotDone() - { - Id = l.EmployeeId, - EmployeeFullName = l.EmployeeFullName, - }).ToList() - }).OrderBy(x => x.ContractSignPercent).ToList(); - + return null; + } + }).Where(x => x != null) + .OrderBy(x => x.ContractSignPercent) + .ToList(); + #endregion var finalResult = new PrintAllContractCheckout() @@ -2088,13 +1990,14 @@ public class ReportRepository : IReportRepository Year = $"{nextMonthStartFa.Year}", Month = nextMonthStartFa.Month.ToFarsiMonthByIntNumber(), ReportType = "امضاء قرارداد", - WorkshopSearches = workshopList, + WorkshopSearches = notCompletedWorkshops, }; Console.WriteLine("ajax >>>>>: " + watch.Elapsed); return finalResult; } - public PrintAllContractCheckout GetPrintAllCheckoutDone(string year, string month, long accountId) + public PrintAllContractCheckout GetPrintAllCheckoutDone(string year, string month, long accountId, + List workshopList) { var watch = System.Diagnostics.Stopwatch.StartNew(); string nowFa = ""; @@ -2118,98 +2021,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 New - #region Checkouts + 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(); - //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 + var notCompletedWorkshops = accountWorkshopList.Select(workshop => { - 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.Where(x => ((x.CheckoutDoneCount * 100) / x.CheckoutLeftWorkCount) < 100) - .Select(x => new workshopSearch() + 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) { - Id = x.Id, - WorkshopFullName = x.WorkshopFullName, - ArchiveCode = x.ArchiveCode, - CheckoutDonePercent = ((x.CheckoutDoneCount * 100) / x.CheckoutLeftWorkCount), - EmployeeNotDones = _context.LeftWorkList.Where(l => l.WorkshopId == x.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)) - .Where(l => !_context.CheckoutSet - .Where(ch => ch.WorkshopId == x.Id && ch.ContractStart >= currentMonthStart && ch.ContractStart < currentMonthEnd && ch.IsActiveString == "true") - .Any(ch => ch.EmployeeId == l.EmployeeId)) - .Select(l => new EmployeeNotDone + + var employeeNotDone = + lefts.Where(x => !createdContractEmployeeIdList.Contains(x.EmployeeId)).Select(l => new EmployeeNotDone() { Id = l.EmployeeId, EmployeeFullName = l.EmployeeFullName, - }).ToList() - }).OrderBy(x => x.CheckoutDonePercent).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 finalResult = new PrintAllContractCheckout() { @@ -2218,13 +2075,14 @@ public class ReportRepository : IReportRepository Year = year, Month = month.ToFarsiMonthByNumber(), ReportType = "تنظیم تصفیه حساب", - WorkshopSearches = workshopList, + WorkshopSearches = notCompletedWorkshops, }; Console.WriteLine("ajax >>>>>: " + watch.Elapsed); return finalResult; } - public PrintAllContractCheckout GetPrintAllCheckoutSignDone(string year, string month, long accountId) + public PrintAllContractCheckout GetPrintAllCheckoutSignDone(string year, string month, long accountId, + List workshopList) { var watch = System.Diagnostics.Stopwatch.StartNew(); string nowFa = ""; @@ -2248,106 +2106,49 @@ 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(); + #region New - var workshops = _context.Workshops.Where(x => x.IsActiveString == "true") - .Include(x => x.WorkshopEmployers) - .Include(x => x.LeftWorks) - .Select(x => new ActiveWorkshops + + 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 => { - 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(), + var checkoutSigned = workshop.Checkouts.Count(x => x.Signature == "1"); + var checkoutCreated = workshop.Checkouts.Count(); - #region Checkouts - - //CheckoutLeft befor This Month - CheckoutLeftIds = x.LeftWorks.Select(l => new LeftWorkViewModel() + var contractSignedPercent = workshop.Checkouts.Any(x => x.Signature == "0") ? ((checkoutSigned * 100) / checkoutCreated) : 100; + if (contractSignedPercent < 100 && checkoutCreated > 0) { - 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(), + var employeeNotDone = + workshop.Checkouts.Where(x => x.Signature == "0").Select(l => new EmployeeNotDone() + { + Id = l.EmployeeId, + EmployeeFullName = l.EmployeeFullName, - #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.Where(x => ((x.CheckoutSignDoneCount * 100) / x.CheckoutDoneCount) < 100) - .Select(x => new workshopSearch() - { - Id = x.Id, - WorkshopFullName = x.WorkshopFullName, - ArchiveCode = x.ArchiveCode, - CheckoutSignPercent = ((x.CheckoutSignDoneCount * 100) / x.CheckoutDoneCount), - EmployeeNotDones = _context.LeftWorkList.Where(l => l.WorkshopId == x.Id).Select(l => new LeftWorkViewModel() + }).ToList(); + return new workshopSearch() + { + Id = workshop.id, + WorkshopFullName = workshop.WorkshopFullName, + ArchiveCode = workshop.ArchiveCode, + CheckoutSignPercent = contractSignedPercent, + EmployeeNotDones = employeeNotDone + }; + } + else { - 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)) - .Where(l => !_context.CheckoutSet.Where(ch => ch.WorkshopId == x.Id && - ch.ContractStart >= currentMonthStart && ch.ContractStart < currentMonthEnd && ch.Signature == "1" && - ch.IsActiveString == "true") - .Any(ch => ch.EmployeeId == l.EmployeeId)) - .Select(l => new EmployeeNotDone - { - Id = l.EmployeeId, - EmployeeFullName = l.EmployeeFullName, - }).ToList() - }).OrderBy(x => x.CheckoutSignPercent).ToList(); + return null; + } + }).Where(x => x != null) + .OrderBy(x => x.CheckoutSignPercent) + .ToList(); + #endregion var finalResult = new PrintAllContractCheckout() { AccountId = accountId, @@ -2355,7 +2156,7 @@ public class ReportRepository : IReportRepository Year = year, Month = month.ToFarsiMonthByNumber(), ReportType = "امضاء تصفیه حساب", - WorkshopSearches = workshopList, + 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 70bb6de3..8fabbd86 100644 --- a/ServiceHost/Areas/Admin/Pages/Company/Reports/Index.cshtml +++ b/ServiceHost/Areas/Admin/Pages/Company/Reports/Index.cshtml @@ -412,7 +412,7 @@ @personnel.ContractDonePercent%
-
-
-
-