diff --git a/Company.Domain/WorkshopAgg/IWorkshopRepository.cs b/Company.Domain/WorkshopAgg/IWorkshopRepository.cs index 14612d9d..ae70a623 100644 --- a/Company.Domain/WorkshopAgg/IWorkshopRepository.cs +++ b/Company.Domain/WorkshopAgg/IWorkshopRepository.cs @@ -63,5 +63,15 @@ public interface IWorkshopRepository : IRepository PersonalContractingPartyViewModel GetPersonalContractingPartyByWorkshopId(long workshopId); List GetWorkshopsByClientAccountId(long clientAccountId); - #endregion + #endregion + + #region Insurance + /// + /// لیست انتخاب کارگاه در مودال ایجاد بیمه + /// + /// + List GetWorkshopSelectListInsuransce(); + + #endregion + } \ No newline at end of file diff --git a/CompanyManagment.App.Contracts/Workshop/IWorkshopApplication.cs b/CompanyManagment.App.Contracts/Workshop/IWorkshopApplication.cs index be9df872..b81a6a05 100644 --- a/CompanyManagment.App.Contracts/Workshop/IWorkshopApplication.cs +++ b/CompanyManagment.App.Contracts/Workshop/IWorkshopApplication.cs @@ -60,4 +60,14 @@ public interface IWorkshopApplication #endregion AccountViewModel GetClientAccountByWorkshopId(long workshopId); + + + #region Insurance + /// + /// لیست انتخاب کارگاه در مودال ایجاد بیمه + /// + /// + List GetWorkshopSelectListInsuransce(); + + #endregion } \ No newline at end of file diff --git a/CompanyManagment.Application/WorkshopAppliction.cs b/CompanyManagment.Application/WorkshopAppliction.cs index 2a0c73d4..256dd2dd 100644 --- a/CompanyManagment.Application/WorkshopAppliction.cs +++ b/CompanyManagment.Application/WorkshopAppliction.cs @@ -16,6 +16,7 @@ using CompanyManagment.App.Contracts.RollCallService; using CompanyManagment.App.Contracts.Workshop; using CompanyManagment.App.Contracts.WorkshopPlan; using CompanyManagment.EFCore.Migrations; +using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.Configuration.UserSecrets; using Microsoft.Identity.Client; using Workshop = Company.Domain.WorkshopAgg.Workshop; @@ -748,10 +749,21 @@ public class WorkshopAppliction : IWorkshopApplication return _personalContractingPartyRepository.GetAccountByPersonalContractingParty(contractingParty.id); } - //public List GetConnectedPersonnelsForMain(long workshopId) - //{ - // return _workshopRepository.GetConnectedPersonnelsForMain(workshopId); - //} - #endregion + + //public List GetConnectedPersonnelsForMain(long workshopId) + //{ + // return _workshopRepository.GetConnectedPersonnelsForMain(workshopId); + //} + + #endregion + + #region Insurance + + public List GetWorkshopSelectListInsuransce() + { + return _workshopRepository.GetWorkshopSelectListInsuransce(); + } + + #endregion } \ No newline at end of file diff --git a/CompanyManagment.EFCore/Repository/EmployerRepository.cs b/CompanyManagment.EFCore/Repository/EmployerRepository.cs index a5bdf2f6..45db0b5a 100644 --- a/CompanyManagment.EFCore/Repository/EmployerRepository.cs +++ b/CompanyManagment.EFCore/Repository/EmployerRepository.cs @@ -136,29 +136,41 @@ public class EmployerRepository : RepositoryBase, IEmployerRepos { - var emps = _context.WorkshopEmployers.Where(x => x.WorkshopId == workshopId) - .Select(x => x.EmployerId).ToList(); - var employerlist = _context.Employers.Where(x => emps.Contains(x.id)).ToList(); - var employers = new List(); - - foreach (var element in employerlist) - { - var employer = new EmprViewModel() + var result = _context.WorkshopEmployers.Where(x => x.WorkshopId == workshopId).Include(x=>x.Employer) + .Select(x=> new EmprViewModel() { - EmployerFullName = element.FName + " " + element.LName, - Id = element.id, - FName = element.FName, - EmployerLName = element.EmployerLName, - IsLegal = element.IsLegal, - LName = element.LName, - IsBlockContractingParty = _context.PersonalContractingParties.FirstOrDefault(x => x.id == element.ContractingPartyId)?.IsBlock, - }; - employers.Add(employer); - } + EmployerFullName = x.Employer.FName + " " + x.Employer.LName, + Id = x.Employer.id, + FName = x.Employer.FName, + EmployerLName = x.Employer.EmployerLName, + IsLegal = x.Employer.IsLegal, + LName = x.Employer.LName, + IsBlockContractingParty = _context.PersonalContractingParties + .Where(p => p.Employers.Any(e => e.id == x.Employer.id)) + .Select(p => p.IsBlock) + .FirstOrDefault(), + }); + //var employerlist = _context.Employers.Where(x => emps.Contains(x.id)).ToList(); + //var employers = new List(); + + //foreach (var element in employerlist) + //{ + // var employer = new EmprViewModel() + // { + // EmployerFullName = element.FName + " " + element.LName, + // Id = element.id, + // FName = element.FName, + // EmployerLName = element.EmployerLName, + // IsLegal = element.IsLegal, + // LName = element.LName, + // IsBlockContractingParty = _context.PersonalContractingParties.FirstOrDefault(x => x.id == element.ContractingPartyId)?.IsBlock, + // }; + // employers.Add(employer); + //} - return employers; + return result.ToList(); } public List GetEmployerByContracrtingPartyID(long contractingPartyId) diff --git a/CompanyManagment.EFCore/Repository/InsuranceListRepository.cs b/CompanyManagment.EFCore/Repository/InsuranceListRepository.cs index 9bbd6374..b4b2ec98 100644 --- a/CompanyManagment.EFCore/Repository/InsuranceListRepository.cs +++ b/CompanyManagment.EFCore/Repository/InsuranceListRepository.cs @@ -316,8 +316,7 @@ public class InsuranceListRepository : RepositoryBase, IIns public List OptimizedSearch(InsuranceListSearchModel searchModel) { - var cornometr = new Stopwatch(); - cornometr.Start(); + var acountId = _authHelper.CurrentAccountId(); var workshopIds = _context.WorkshopAccounts.Where(x => x.AccountId == acountId).Select(x => x.WorkshopId); @@ -444,9 +443,6 @@ public class InsuranceListRepository : RepositoryBase, IIns //var testquery = query.Where(x => x.Year == searchModel.Year).AsEnumerable(); - - Console.WriteLine("Optimized Search Time : " + cornometr.Elapsed); - cornometr.Stop(); return query.ToList(); } public List Search(InsuranceListSearchModel searchModel) diff --git a/CompanyManagment.EFCore/Repository/WorkshopRepository.cs b/CompanyManagment.EFCore/Repository/WorkshopRepository.cs index bdf6910c..7274d640 100644 --- a/CompanyManagment.EFCore/Repository/WorkshopRepository.cs +++ b/CompanyManagment.EFCore/Repository/WorkshopRepository.cs @@ -1,5 +1,6 @@ using System; using System.Collections.Generic; +using System.Diagnostics; using System.Diagnostics.CodeAnalysis; using System.Linq; using _0_Framework.Application; @@ -106,17 +107,14 @@ public class WorkshopRepository : RepositoryBase GetWorkshopAccount() { - var AcountID = _authHelper.CurrentAccountId(); - //var workshopAcounts = _context.WorkshopAccounts.Where(x => x.AccountId == AcountID) - // .Select(x => x.WorkshopId).ToList(); - var workshopAcountsList = _context.WorkshopAccounts.Where(x => x.AccountId == AcountID); - //var res = (e => contractData.Contains(e.Id)) - var workshopAcounts = workshopAcountsList.Select(x => x.WorkshopId).ToList(); + var cornometr = new Stopwatch(); + cornometr.Start(); + var acountId = _authHelper.CurrentAccountId(); + var workshopIds = _context.WorkshopAccounts.Where(x => x.AccountId == acountId).Select(x => x.WorkshopId); + - var work = _context.Workshops - .Include(x => x.WorkshopEmployers).ThenInclude(x=>x.Employer).ToList(); - - var result =work + var result = _context.Workshops.Where(x => workshopIds.Contains(x.id) && x.IsActiveString == "true") + .Include(x => x.WorkshopEmployers).ThenInclude(x=>x.Employer) .Select(x => new WorkshopViewModel { Id = x.id, @@ -146,8 +144,12 @@ public class WorkshopRepository : RepositoryBase new EmployerViewModel() { Id = y.EmployerId, FullName = y.Employer.FullName }).ToList() - }).Where(e => workshopAcounts.Contains(e.Id)).ToList(); - return result.Where(x => x.IsActiveString == "true").ToList(); + }); + + + Console.WriteLine("old list Time : " + cornometr.Elapsed); + cornometr.Stop(); + return result.ToList(); } public EditWorkshop GetDetails(long id) @@ -1066,6 +1068,7 @@ public class WorkshopRepository : RepositoryBase GetWorkshopByWorkshopIds(List workshopIds) @@ -1513,4 +1516,30 @@ public class WorkshopRepository : RepositoryBase GetWorkshopSelectListInsuransce() + { + var cornometr = new Stopwatch(); + cornometr.Start(); + var acountId = _authHelper.CurrentAccountId(); + var workshopIds = _context.WorkshopAccounts.Where(x => x.AccountId == acountId).Select(x => x.WorkshopId); + + var res = _context.Workshops + .Where(x=> workshopIds.Contains(x.id) && !string.IsNullOrWhiteSpace(x.TypeOfInsuranceSend) && x.TypeOfInsuranceSend != "false" && x.IsActiveString == "true") + .Select(x=> new WorkshopViewModel() + { + Id = x.id, + WorkshopFullName = x.WorkshopFullName, + }); + + + Console.WriteLine("Optimized list Time : " + cornometr.Elapsed); + cornometr.Stop(); + return res.ToList(); + + } + + #endregion } \ No newline at end of file diff --git a/ServiceHost/Areas/Admin/Pages/Company/InsuranceList/Index.cshtml.cs b/ServiceHost/Areas/Admin/Pages/Company/InsuranceList/Index.cshtml.cs index 4e4f5c01..15bfc555 100644 --- a/ServiceHost/Areas/Admin/Pages/Company/InsuranceList/Index.cshtml.cs +++ b/ServiceHost/Areas/Admin/Pages/Company/InsuranceList/Index.cshtml.cs @@ -56,6 +56,9 @@ public class IndexModel : PageModel _webHostEnvironment = webHostEnvironment; } + + #region MainPageList + public void OnGet() { var date = DateTime.Now.ToFarsi(); @@ -77,17 +80,17 @@ public class IndexModel : PageModel { var searchResult = _insuranceListApplication.Search(searchModel); - //foreach (var item in searchResult) - //{ - // item.Month = item.Month.GetMonthByNumber(); - //} + var result = new MainViewModel(); result.MainList = searchResult; return Partial("./MainSearch", result); - } + } + #endregion + + /// /// دکمه ایجاد لیست بیمه /// @@ -100,13 +103,11 @@ public class IndexModel : PageModel var day = Convert.ToInt32(date.Substring(8, 2)); var persianDate = new PersianDateTime(year, month, day); var persianBeforeDate = persianDate.AddMonths(-1).ToString("yyyy/MM/dd"); + //کارگاه هایی نوع ارسال لیست بیمه آنها مشخص شده - var workshopList = _workshopApplication.GetWorkshopAccount().Where(x => - !string.IsNullOrWhiteSpace(x.TypeOfInsuranceSend) && x.TypeOfInsuranceSend != "false").ToList(); + var workshopList = _workshopApplication.GetWorkshopSelectListInsuransce(); var command = new CreateInsuranceList { - //WorkShopSelectList = new SelectList(_workshopApplication.GetWorkshopAccount(),"Id", "WorkshopFullName"), - WorkShopSelectList = new SelectList(workshopList, "Id", "WorkshopFullName"), YearList = _yearlySalaryApplication.GetYears(), //ماه قبل @@ -560,7 +561,7 @@ public class IndexModel : PageModel public IActionResult OnGetEdit(long id) { var insurance = _insuranceListApplication.GetDetailsForEdit(id); - var workshopList = _workshopApplication.GetWorkshopAccount(); + var workshopList = _workshopApplication.GetWorkshopSelectListInsuransce(); var workshopObj = workshopList.Where(x => x.Id == insurance.WorkshopId)?.FirstOrDefault(); insurance.WorkshopName = workshopObj == null ? string.Empty : workshopObj.WorkshopFullName; insurance.TypeOfInsuranceSend = workshopObj.TypeOfInsuranceSend;