From ca6638d6a367b66dcc2846d40a8dfdb2ec4739c3 Mon Sep 17 00:00:00 2001 From: mahan Date: Wed, 22 Oct 2025 19:26:10 +0330 Subject: [PATCH] feat: enhance workshop query with additional filtering options and improved mapping --- .../Repository/InsuranceListRepository.cs | 95 ++++++++++++++++--- 1 file changed, 84 insertions(+), 11 deletions(-) diff --git a/CompanyManagment.EFCore/Repository/InsuranceListRepository.cs b/CompanyManagment.EFCore/Repository/InsuranceListRepository.cs index 62e5038a..c898e60e 100644 --- a/CompanyManagment.EFCore/Repository/InsuranceListRepository.cs +++ b/CompanyManagment.EFCore/Repository/InsuranceListRepository.cs @@ -1724,9 +1724,86 @@ public class InsuranceListRepository : RepositoryBase, IIns .Include(x => x.LeftWorkInsurances) .Where(x => x.LeftWorkInsurances.Any(l => l.StartWorkDate <= firstDayOfMonth && (l.LeftWorkDate == null || l.LeftWorkDate >= firstDayOfMonth))); + + + var query = notCreatedWorkshop.Select(result=>new InsuranceListViewModel + { + Year = searchModel.Year, + Month = searchModel.Month, + WorkShopId = result.id, + WorkShopCode = result.InsuranceWorkshopInfo != null + ? result.InsuranceWorkshopInfo.InsuranceCode + : result.InsuranceCode, + WorkShopName = result.InsuranceWorkshopInfo != null + ? result.InsuranceWorkshopInfo.WorkshopName + : result.WorkshopFullName, + TypeOfInsuranceSend = result.TypeOfInsuranceSend == "NormalList" ? "عادی" : + result.TypeOfInsuranceSend == "Govermentlist" ? "کمک دولت" : + result.TypeOfInsuranceSend == "Familylist" ? "خانوادگی" : "", + FixedSalary = result.FixedSalary, + StrFixedSalary = result.FixedSalary ? "دارد" : "ندارد", + EmployerName = result.InsuranceWorkshopInfo != null + ? result.InsuranceWorkshopInfo.EmployerName + : result.WorkshopFullName, + Branch = "", + City = "", + ArchiveCode = result.ArchiveCode, + }); + + + if (!string.IsNullOrEmpty(searchModel.Month) && searchModel.Month != "0") + query = query.Where(x => x.Month == searchModel.Month).OrderByDescending(x => x.WorkShopName) + .ThenByDescending(x => x.EmployerName).ThenByDescending(x => x.Year); - var workshopList = await notCreatedWorkshop.Skip(searchModel.PageIndex).Take(30).ToListAsync(); - var workshopIds = workshopList.Select(x=>x.id); + if (!string.IsNullOrEmpty(searchModel.Year) && searchModel.Year != "0") + query = query.Where(x => x.Year == searchModel.Year).OrderByDescending(x => x.EmployerName) + .ThenByDescending(x => x.WorkShopName).ThenByDescending(x => x.Month); + + + if (!string.IsNullOrEmpty(searchModel.WorkShopCode)) + query = query.Where(x => x.WorkShopCode == searchModel.WorkShopCode).OrderByDescending(x => x.Year) + .ThenByDescending(x => x.Month).ThenByDescending(x => x.EmployerName); + + if (!string.IsNullOrEmpty(searchModel.WorkShopName)) + query = query.Where(x => x.WorkShopName.Contains(searchModel.WorkShopName)) + .OrderByDescending(x => x.EmployerName).ThenByDescending(x => x.Year).OrderByDescending(x => x.Month); + + + if (searchModel.WorkshopId > 0) + { + var workshopName = query.FirstOrDefault(u => u.WorkShopId == searchModel.WorkshopId)?.WorkShopName; + + query = query.Where(x => x.WorkShopName.Contains(workshopName)).OrderByDescending(x => x.EmployerName) + .ThenByDescending(x => x.Year).ThenByDescending(x => x.Month); + } + + if (searchModel.EmployerId > 0) + { + var employerName = query.FirstOrDefault(u => u.EmployerId == searchModel.EmployerId)?.EmployerName; + query = query.Where(x => x.EmployerName.Contains(employerName)).OrderByDescending(x => x.EmployerName) + .ThenByDescending(x => x.Year).ThenByDescending(x => x.Month); + } + + if (!string.IsNullOrEmpty(searchModel.EmployerName)) + query = query.Where(x => x.EmployerName.Contains(searchModel.EmployerName)) + .OrderByDescending(x => x.EmployerName).ThenByDescending(x => x.Year).OrderByDescending(x => x.Month); + + + if (searchModel.FixedSalary != null) + query = query.Where(x => x.FixedSalary == searchModel.FixedSalary); + + if (!string.IsNullOrEmpty(searchModel.TypeOfInsuranceSend) && searchModel.TypeOfInsuranceSend != "0") + query = query.Where(x => x.TypeOfInsuranceSend == searchModel.TypeOfInsuranceSend); + + if (!string.IsNullOrEmpty(searchModel.City) && searchModel.City != "0") + query = query.Where(x => x.City == searchModel.City); + + if (!string.IsNullOrEmpty(searchModel.Branch)) + query = query.Where(x => x.Branch.Contains(searchModel.Branch)); + + + var workshopList = await query.Skip(searchModel.PageIndex).Take(30).ToListAsync(); + var workshopIds = workshopList.Select(x=>x.WorkShopId); var employers =await _context.WorkshopEmployers .Where(x=>workshopIds.Contains(x.WorkshopId)) @@ -1735,20 +1812,16 @@ public class InsuranceListRepository : RepositoryBase, IIns var res = workshopList.Select(x => { - var employer = employers.FirstOrDefault(e => e.WorkshopId ==x.id)?.Employer; + var employer = employers.FirstOrDefault(e => e.WorkshopId ==x.WorkShopId)?.Employer; return new InsuranceListViewModel { - WorkShopId = x.id, - WorkShopCode = x.InsuranceCode, - WorkShopName = x.InsuranceWorkshopInfo != null - ? x.InsuranceWorkshopInfo.WorkshopName - : x.WorkshopFullName, + WorkShopId = x.WorkShopId, + WorkShopCode = x.WorkShopCode, + WorkShopName = x.WorkShopName, EmployerName = employer != null ? employer.FullName - : (x.InsuranceWorkshopInfo != null - ? x.InsuranceWorkshopInfo.EmployerName - : x.WorkshopFullName), + : (x.EmployerName), Year = searchModel.Year, Month = searchModel.Month, TypeOfInsuranceSend = x.TypeOfInsuranceSend == "NormalList" ? "عادی" :