From 2b993fb746a75f61a3cb0edd35a97259f1bdaeb2 Mon Sep 17 00:00:00 2001 From: mahan Date: Tue, 14 Oct 2025 09:58:49 +0330 Subject: [PATCH] feat: enhance employer selection with optional legal type filtering --- .../empolyerAgg/IEmployerRepository.cs | 3 +- .../Employer/IEmployerApplication.cs | 3 +- .../EmployerApplication.cs | 4 +- .../Repository/EmployerRepository.cs | 764 +++++++++--------- .../Admin/Controllers/EmployerController.cs | 5 +- 5 files changed, 402 insertions(+), 377 deletions(-) diff --git a/Company.Domain/empolyerAgg/IEmployerRepository.cs b/Company.Domain/empolyerAgg/IEmployerRepository.cs index e3f1c7a1..9920f4f6 100644 --- a/Company.Domain/empolyerAgg/IEmployerRepository.cs +++ b/Company.Domain/empolyerAgg/IEmployerRepository.cs @@ -1,6 +1,7 @@ using System.Collections.Generic; using System.Threading.Tasks; using _0_Framework.Application; +using _0_Framework.Application.Enums; using _0_Framework.Domain; using CompanyManagment.App.Contracts.Checkout; using CompanyManagment.App.Contracts.Employer; @@ -34,7 +35,7 @@ public interface IEmployerRepository : IRepository List GetEmployersHasWorkshop(); - Task> GetSelectList(string search,long id); + Task> GetSelectList(string search, long id, LegalType? legalType); #endregion diff --git a/CompanyManagment.App.Contracts/Employer/IEmployerApplication.cs b/CompanyManagment.App.Contracts/Employer/IEmployerApplication.cs index 879967a6..e49c0ae5 100644 --- a/CompanyManagment.App.Contracts/Employer/IEmployerApplication.cs +++ b/CompanyManagment.App.Contracts/Employer/IEmployerApplication.cs @@ -46,8 +46,9 @@ public interface IEmployerApplication /// /// /// + /// /// - Task> GetSelectList(string search, long id); + Task> GetSelectList(string search, long id, LegalType? legalType); #endregion #region NewByHeydari diff --git a/CompanyManagment.Application/EmployerApplication.cs b/CompanyManagment.Application/EmployerApplication.cs index ac91306c..479879d1 100644 --- a/CompanyManagment.Application/EmployerApplication.cs +++ b/CompanyManagment.Application/EmployerApplication.cs @@ -1284,9 +1284,9 @@ public class EmployerApplication : IEmployerApplication return opration.Succcedded(); } - public async Task> GetSelectList(string search, long id) + public async Task> GetSelectList(string search, long id, LegalType? legalType) { - return await _EmployerRepository.GetSelectList(search, id); + return await _EmployerRepository.GetSelectList(search, id,legalType); } async Task> IEmployerApplication.Remove(long id) diff --git a/CompanyManagment.EFCore/Repository/EmployerRepository.cs b/CompanyManagment.EFCore/Repository/EmployerRepository.cs index 72d2ea6a..378d23f5 100644 --- a/CompanyManagment.EFCore/Repository/EmployerRepository.cs +++ b/CompanyManagment.EFCore/Repository/EmployerRepository.cs @@ -25,7 +25,6 @@ public class EmployerRepository : RepositoryBase, IEmployerRepos { _context = context; _authHelper = authHelper; - } public List GetEmployers() @@ -45,28 +44,27 @@ public class EmployerRepository : RepositoryBase, IEmployerRepos Phone = x.Phone, AgentPhone = x.AgentPhone, Address = x.Address - }).ToList(); } public List GetEmployers(List id) { return _context.Employers.Select(x => new EmployerViewModel() - { - Id = x.id, - IsActive = x.IsActive, - FName = x.FName, - LName = x.LName, - FullName = x.FullName, - Nationalcode = x.Nationalcode, - IdNumber = x.IdNumber, - RegisterId = x.RegisterId, - NationalId = x.NationalId, - IsLegal = x.IsLegal, - Phone = x.Phone, - AgentPhone = x.AgentPhone, - Address = x.Address - }).Where(x => id.Contains(x.Id)) + { + Id = x.id, + IsActive = x.IsActive, + FName = x.FName, + LName = x.LName, + FullName = x.FullName, + Nationalcode = x.Nationalcode, + IdNumber = x.IdNumber, + RegisterId = x.RegisterId, + NationalId = x.NationalId, + IsLegal = x.IsLegal, + Phone = x.Phone, + AgentPhone = x.AgentPhone, + Address = x.Address + }).Where(x => id.Contains(x.Id)) .Where(x => x.IsActive).ToList(); //var empList = new List(); //foreach (var item in id) @@ -93,66 +91,60 @@ public class EmployerRepository : RepositoryBase, IEmployerRepos //} //return empList; - } public EditEmployer GetDetails(long id) { return _context.Employers.Select(x => new EditEmployer - { - Id = x.id, - FName = x.FName, - LName = x.LName, - ContractingPartyId = x.ContractingPartyId, - Gender = x.Gender, - Nationalcode = x.Nationalcode, - IdNumber = x.IdNumber, - Nationality = x.Nationality, - FatherName = x.FatherName, - DateOfBirth = x.DateOfBirth == initial ? "" : x.DateOfBirth.ToFarsi(), - DateOfIssue = x.DateOfIssue == initial ? "" : x.DateOfIssue.ToFarsi(), - PlaceOfIssue = x.PlaceOfIssue, - RegisterId = x.RegisterId, - NationalId = x.NationalId, - EmployerLName = x.EmployerLName, - IsLegal = x.IsLegal, - Phone = x.Phone, - AgentPhone = x.AgentPhone, - Address = x.Address, - MclsUserName = x.MclsUserName, - MclsPassword = x.MclsPassword, - EserviceUserName = x.EserviceUserName, - EservicePassword = x.EservicePassword, - TaxOfficeUserName = x.EservicePassword, - SanaUserName = x.SanaUserName, - SanaPassword = x.SanaPassword, - EmployerNo = x.EmployerNo, - FullName = x.FullName - - - - }) + { + Id = x.id, + FName = x.FName, + LName = x.LName, + ContractingPartyId = x.ContractingPartyId, + Gender = x.Gender, + Nationalcode = x.Nationalcode, + IdNumber = x.IdNumber, + Nationality = x.Nationality, + FatherName = x.FatherName, + DateOfBirth = x.DateOfBirth == initial ? "" : x.DateOfBirth.ToFarsi(), + DateOfIssue = x.DateOfIssue == initial ? "" : x.DateOfIssue.ToFarsi(), + PlaceOfIssue = x.PlaceOfIssue, + RegisterId = x.RegisterId, + NationalId = x.NationalId, + EmployerLName = x.EmployerLName, + IsLegal = x.IsLegal, + Phone = x.Phone, + AgentPhone = x.AgentPhone, + Address = x.Address, + MclsUserName = x.MclsUserName, + MclsPassword = x.MclsPassword, + EserviceUserName = x.EserviceUserName, + EservicePassword = x.EservicePassword, + TaxOfficeUserName = x.EservicePassword, + SanaUserName = x.SanaUserName, + SanaPassword = x.SanaPassword, + EmployerNo = x.EmployerNo, + FullName = x.FullName + }) .FirstOrDefault(x => x.Id == id); } public List GetEmployerByWorkshopId(long workshopId) { - - - var result = _context.WorkshopEmployers.Where(x => x.WorkshopId == workshopId).Include(x=>x.Employer) - .Select(x=> new EmprViewModel() + var result = _context.WorkshopEmployers.Where(x => x.WorkshopId == workshopId).Include(x => x.Employer) + .Select(x => new EmprViewModel() { - 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, + 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(), - }); + .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(); @@ -172,40 +164,34 @@ public class EmployerRepository : RepositoryBase, IEmployerRepos //} - return result.ToList(); } public List GetEmployerByContracrtingPartyID(long contractingPartyId) { return _context.Employers.Select(x => new EmployerViewModel() - { - Id = x.id, - FName = x.FName, - LName = x.LName, - ContractingPartyID = x.ContractingPartyId, - EmployerNo = x.EmployerNo, - Nationalcode = x.Nationalcode, - IdNumber = x.IdNumber, - Nationality = x.Nationality, + { + Id = x.id, + FName = x.FName, + LName = x.LName, + ContractingPartyID = x.ContractingPartyId, + EmployerNo = x.EmployerNo, + Nationalcode = x.Nationalcode, + IdNumber = x.IdNumber, + Nationality = x.Nationality, - RegisterId = x.RegisterId, - NationalId = x.NationalId, - EmployerLName = x.EmployerLName, - IsLegal = x.IsLegal, + RegisterId = x.RegisterId, + NationalId = x.NationalId, + EmployerLName = x.EmployerLName, + IsLegal = x.IsLegal, - FullName = x.FName + " " + x.LName, - - - - }).Where(x => x.ContractingPartyID == contractingPartyId) + FullName = x.FName + " " + x.LName, + }).Where(x => x.ContractingPartyID == contractingPartyId) .ToList(); } public List Search(EmployerSearchModel searchModel) { - - var workshopEmp = _context.WorkshopEmployers.Select(x => x.EmployerId); var query = _context.Employers.Include(x => x.ContractingParty) .Select(x => new EmployerViewModel @@ -236,16 +222,21 @@ public class EmployerRepository : RepositoryBase, IEmployerRepos if (!string.IsNullOrWhiteSpace(searchModel.Nationalcode) && searchModel.Nationalcode != "0") - query = query.Where(x => x.Nationalcode.Contains(searchModel.Nationalcode) || x.NationalId.Contains(searchModel.Nationalcode)); + query = query.Where(x => + x.Nationalcode.Contains(searchModel.Nationalcode) || x.NationalId.Contains(searchModel.Nationalcode)); if (!string.IsNullOrWhiteSpace(searchModel.IdNumber) && searchModel.IdNumber != "0") - query = query.Where(x => x.IdNumber.Contains(searchModel.IdNumber) || x.RegisterId.Contains(searchModel.IdNumber)); + query = query.Where(x => + x.IdNumber.Contains(searchModel.IdNumber) || x.RegisterId.Contains(searchModel.IdNumber)); if (!string.IsNullOrWhiteSpace(searchModel.EmployerLName)) query = query.Where(x => (x.IsLegal == "حقیقی" && - ((!string.IsNullOrWhiteSpace(x.FName) && x.FName.StartsWith(searchModel.EmployerLName)) || - (!string.IsNullOrWhiteSpace(x.LName) && x.LName.StartsWith(searchModel.EmployerLName)))) - || (x.IsLegal == "حقوقی" && (!string.IsNullOrWhiteSpace(x.LName) && x.LName.Contains(searchModel.EmployerLName)))); + ((!string.IsNullOrWhiteSpace(x.FName) && + x.FName.StartsWith(searchModel.EmployerLName)) || + (!string.IsNullOrWhiteSpace(x.LName) && + x.LName.StartsWith(searchModel.EmployerLName)))) + || (x.IsLegal == "حقوقی" && (!string.IsNullOrWhiteSpace(x.LName) && + x.LName.Contains(searchModel.EmployerLName)))); if (!string.IsNullOrWhiteSpace(searchModel.IsLegal)) query = query.Where(x => x.IsLegal.Contains(searchModel.IsLegal)); @@ -253,7 +244,10 @@ public class EmployerRepository : RepositoryBase, IEmployerRepos if (!string.IsNullOrEmpty(searchModel.ContactingPartyName)) { - var personalContractingPIds = _context.PersonalContractingParties.Where(x => !string.IsNullOrEmpty(x.FName) && (x.FName + " " + x.LName).Contains(searchModel.ContactingPartyName)).Select(x => x.id).ToList(); + var personalContractingPIds = _context.PersonalContractingParties.Where(x => + !string.IsNullOrEmpty(x.FName) && + (x.FName + " " + x.LName).Contains(searchModel.ContactingPartyName)) + .Select(x => x.id).ToList(); query = query.Where(x => personalContractingPIds.Contains(x.ContractingPartyID)); } @@ -276,29 +270,25 @@ public class EmployerRepository : RepositoryBase, IEmployerRepos } - - return query.OrderByDescending(x => x.Id).ToList(); } public List GetEmployerByEmployerIds(List employerIds) { return _context.Employers.Select(x => new EmprViewModel() - { - Id = x.id, - FName = x.FName, - LName = x.LName, - EmployerLName = x.EmployerLName, - IsLegal = x.IsLegal, + { + Id = x.id, + FName = x.FName, + LName = x.LName, + EmployerLName = x.EmployerLName, + IsLegal = x.IsLegal, - //FullName = x.FName + " " + x.LName, - - }).Where(x => employerIds.Contains(x.Id)) + //FullName = x.FName + " " + x.LName, + }).Where(x => employerIds.Contains(x.Id)) .ToList(); } ///client - public bool Remove(long id) { using (var transaction = _context.Database.BeginTransaction()) @@ -351,6 +341,7 @@ public class EmployerRepository : RepositoryBase, IEmployerRepos employerAccount.EmployerId = command.id; _context.EmployerAccounts.Add(employerAccount); } + _context.SaveChanges(); transaction.Commit(); return true; @@ -362,12 +353,12 @@ public class EmployerRepository : RepositoryBase, IEmployerRepos } } } + public List SearchForClient(EmployerSearchModel searchModel) { - var acountID = _authHelper.CurrentAccountId(); - var employerIds = _context.EmployerAccounts.Where(x => x.AccountId == acountID).AsNoTracking().Select(x => x.EmployerId).ToList(); - + var employerIds = _context.EmployerAccounts.Where(x => x.AccountId == acountID).AsNoTracking() + .Select(x => x.EmployerId).ToList(); var query = _context.Employers.Where(x => employerIds.Contains(x.id)).Include(x => x.ContractingParty) @@ -387,7 +378,6 @@ public class EmployerRepository : RepositoryBase, IEmployerRepos IsActive = x.IsActive, Address = x.Address, EmployerNo = x.EmployerNo, - }); if (!string.IsNullOrWhiteSpace(searchModel.FName)) @@ -424,29 +414,32 @@ public class EmployerRepository : RepositoryBase, IEmployerRepos return query.OrderByDescending(x => x.Id).ToList(); } + public List GetEmployersForClient(long acountID) { // var acountID = _authHelper.CurrentAccountId(); - var employerIds = _context.EmployerAccounts.Where(x => x.AccountId == acountID).AsNoTracking().Select(x => x.EmployerId).ToList(); + var employerIds = _context.EmployerAccounts.Where(x => x.AccountId == acountID).AsNoTracking() + .Select(x => x.EmployerId).ToList(); - return _context.Employers.Where(x => employerIds.Contains(x.id) && x.IsActive == true).Select(x => new EmployerViewModel - { - Id = x.id, + return _context.Employers.Where(x => employerIds.Contains(x.id) && x.IsActive == true).Select(x => + new EmployerViewModel + { + Id = x.id, - FName = x.FName, - LName = x.LName, - FullName = x.FullName, - Nationalcode = x.Nationalcode, - IdNumber = x.IdNumber, - RegisterId = x.RegisterId, - NationalId = x.NationalId, - IsLegal = x.IsLegal, - Phone = x.Phone, - AgentPhone = x.AgentPhone, - Address = x.Address - - }).ToList(); + FName = x.FName, + LName = x.LName, + FullName = x.FullName, + Nationalcode = x.Nationalcode, + IdNumber = x.IdNumber, + RegisterId = x.RegisterId, + NationalId = x.NationalId, + IsLegal = x.IsLegal, + Phone = x.Phone, + AgentPhone = x.AgentPhone, + Address = x.Address + }).ToList(); } + public bool CreateLegalsForClient(Employer legalEmployerData) { using (var transaction = _context.Database.BeginTransaction()) @@ -483,7 +476,6 @@ public class EmployerRepository : RepositoryBase, IEmployerRepos } - transaction.Commit(); return true; } @@ -498,22 +490,24 @@ public class EmployerRepository : RepositoryBase, IEmployerRepos public bool ExistsEmployerAccount(string commandNationalcode) { var acountID = _authHelper.CurrentAccountId(); - var employerIdstList = _context.EmployerAccounts.Where(x => x.AccountId == acountID).Select(x => x.EmployerId).ToList(); + var employerIdstList = _context.EmployerAccounts.Where(x => x.AccountId == acountID).Select(x => x.EmployerId) + .ToList(); if (employerIdstList != null && employerIdstList.Count > 0) { - return _context.Employers.Any(x => employerIdstList.Contains(x.id) && x.Nationalcode == commandNationalcode); + return _context.Employers.Any(x => + employerIdstList.Contains(x.id) && x.Nationalcode == commandNationalcode); } else return false; - } public bool ExistsEmployerAccountNationalId(string commandNationalId) { var acountID = _authHelper.CurrentAccountId(); - var employerIdstList = _context.EmployerAccounts.Where(x => x.AccountId == acountID).Select(x => x.EmployerId).ToList(); + var employerIdstList = _context.EmployerAccounts.Where(x => x.AccountId == acountID).Select(x => x.EmployerId) + .ToList(); if (employerIdstList != null && employerIdstList.Count > 0) { return _context.Employers.Any(x => employerIdstList.Contains(x.id) && x.NationalId == commandNationalId); @@ -525,7 +519,8 @@ public class EmployerRepository : RepositoryBase, IEmployerRepos public bool ExistsEmployerAccountById(string nationalcode, long commandId) { var acountID = _authHelper.CurrentAccountId(); - var employerIdstList = _context.EmployerAccounts.Where(x => x.AccountId == acountID && x.EmployerId != commandId).Select(x => x.EmployerId).ToList(); + var employerIdstList = _context.EmployerAccounts + .Where(x => x.AccountId == acountID && x.EmployerId != commandId).Select(x => x.EmployerId).ToList(); if (employerIdstList != null && employerIdstList.Count > 0) { return _context.Employers.Any(x => employerIdstList.Contains(x.id) && x.Nationalcode == nationalcode); @@ -537,20 +532,21 @@ public class EmployerRepository : RepositoryBase, IEmployerRepos public bool ExistsEmployerAccountNationalIdEmployerId(string nationalId, long commandId) { var acountID = _authHelper.CurrentAccountId(); - var employerIdstList = _context.EmployerAccounts.Where(x => x.AccountId == acountID && x.EmployerId != commandId).Select(x => x.EmployerId).ToList(); + var employerIdstList = _context.EmployerAccounts + .Where(x => x.AccountId == acountID && x.EmployerId != commandId).Select(x => x.EmployerId).ToList(); if (employerIdstList != null && employerIdstList.Count > 0) { return _context.Employers.Any(x => employerIdstList.Contains(x.id) && x.NationalId == nationalId); } else return false; - } public bool ExistsEmployerAccountRegisterId(string commandRegisterId) { var acountID = _authHelper.CurrentAccountId(); - var employerIdstList = _context.EmployerAccounts.Where(x => x.AccountId == acountID).Select(x => x.EmployerId).ToList(); + var employerIdstList = _context.EmployerAccounts.Where(x => x.AccountId == acountID).Select(x => x.EmployerId) + .ToList(); if (employerIdstList != null && employerIdstList.Count > 0) { return _context.Employers.Any(x => employerIdstList.Contains(x.id) && x.RegisterId == commandRegisterId); @@ -562,7 +558,8 @@ public class EmployerRepository : RepositoryBase, IEmployerRepos public bool ExistsEmployerAccountLName(string commandLName) { var acountID = _authHelper.CurrentAccountId(); - var employerIdstList = _context.EmployerAccounts.Where(x => x.AccountId == acountID).Select(x => x.EmployerId).ToList(); + var employerIdstList = _context.EmployerAccounts.Where(x => x.AccountId == acountID).Select(x => x.EmployerId) + .ToList(); if (employerIdstList != null && employerIdstList.Count > 0) { return _context.Employers.Any(x => employerIdstList.Contains(x.id) && x.LName == commandLName); @@ -583,9 +580,17 @@ public class EmployerRepository : RepositoryBase, IEmployerRepos }).ToList(); } - public async Task> GetSelectList(string search,long id) + public async Task> GetSelectList(string search, long id, LegalType? legalType) { - var query = _context.Employers.Select(x => new EmployerSelectListViewModel() + var query = _context.Employers.AsQueryable(); + + if (legalType != null) + { + var legalTypeValue = legalType == LegalType.Real ? "حقیقی" : "حقوقی"; + query = query.Where(x => x.IsLegal == legalTypeValue); + } + + var viewModelQuery = query.Select(x => new EmployerSelectListViewModel() { Id = x.id, Name = x.FullName @@ -594,14 +599,15 @@ public class EmployerRepository : RepositoryBase, IEmployerRepos if (id > 0) { - idSelected = await query.FirstOrDefaultAsync(x => x.Id == id); - } - if (!string.IsNullOrWhiteSpace(search)) - { - query = query.Where(x => x.Name.Contains(search)); + idSelected = await viewModelQuery.FirstOrDefaultAsync(x => x.Id == id); } - var list = await query.Take(100).ToListAsync(); + if (!string.IsNullOrWhiteSpace(search)) + { + viewModelQuery = viewModelQuery.Where(x => x.Name.Contains(search)); + } + + var list = await viewModelQuery.Take(100).ToListAsync(); if (idSelected != null) list.Add(idSelected); @@ -612,6 +618,7 @@ public class EmployerRepository : RepositoryBase, IEmployerRepos #endregion #region NewByHeydari + public OperationResult DeleteEmployer(long id) { var op = new OperationResult(); @@ -631,9 +638,11 @@ public class EmployerRepository : RepositoryBase, IEmployerRepos public List GetEmployerWithFNameOrLName(string searchText) { var result = _context.Employers.Where(x => (!string.IsNullOrEmpty(x.FName) && x.FName.StartsWith(searchText)) || - (!string.IsNullOrEmpty(x.LName) && x.LName.StartsWith(searchText)) || - (x.IsLegal == "حقیقی" && (!string.IsNullOrEmpty(x.FName) && !string.IsNullOrEmpty(x.LName)) && - (x.FName + " " + x.LName).Contains(searchText))) + (!string.IsNullOrEmpty(x.LName) && x.LName.StartsWith(searchText)) || + (x.IsLegal == "حقیقی" && + (!string.IsNullOrEmpty(x.FName) && + !string.IsNullOrEmpty(x.LName)) && + (x.FName + " " + x.LName).Contains(searchText))) .Select(x => new EmployerViewModel { Id = x.id, @@ -642,10 +651,12 @@ public class EmployerRepository : RepositoryBase, IEmployerRepos return result; } + public List GetEmployerWithIdNumberOrRegisterId(string searchText) { - var result = _context.Employers.Where(x => (x.IsLegal == "حقیقی" && !string.IsNullOrEmpty(x.IdNumber) && x.IdNumber.StartsWith(searchText)) - || (x.IsLegal == "حقوقی" && !string.IsNullOrEmpty(x.RegisterId) && x.RegisterId.StartsWith(searchText))) + var result = _context.Employers.Where(x => + (x.IsLegal == "حقیقی" && !string.IsNullOrEmpty(x.IdNumber) && x.IdNumber.StartsWith(searchText)) + || (x.IsLegal == "حقوقی" && !string.IsNullOrEmpty(x.RegisterId) && x.RegisterId.StartsWith(searchText))) .Select(x => new EmployerViewModel { Id = x.id, @@ -654,10 +665,12 @@ public class EmployerRepository : RepositoryBase, IEmployerRepos return result; } + public List GetEmployerWithNationalcodeOrNationalId(string searchText) { - var result = _context.Employers.Where(x => (x.IsLegal == "حقیقی" && !string.IsNullOrEmpty(x.Nationalcode) && x.Nationalcode.StartsWith(searchText)) - || (x.IsLegal == "حقوقی" && !string.IsNullOrEmpty(x.NationalId) && x.NationalId.StartsWith(searchText))) + var result = _context.Employers.Where(x => + (x.IsLegal == "حقیقی" && !string.IsNullOrEmpty(x.Nationalcode) && x.Nationalcode.StartsWith(searchText)) + || (x.IsLegal == "حقوقی" && !string.IsNullOrEmpty(x.NationalId) && x.NationalId.StartsWith(searchText))) .Select(x => new EmployerViewModel { Id = x.id, @@ -674,12 +687,11 @@ public class EmployerRepository : RepositoryBase, IEmployerRepos { try { - - var employer = _context.Employers.FirstOrDefault(x => x.id == id); employer.DeActive(); - var workshopIds = _context.WorkshopEmployers.Where(x => x.EmployerId == id).Select(x => x.WorkshopId).ToList(); + var workshopIds = _context.WorkshopEmployers.Where(x => x.EmployerId == id).Select(x => x.WorkshopId) + .ToList(); var workshops = _context.Workshops.Where(x => workshopIds.Contains(x.id)).ToList(); workshops.ForEach(x => x.DeActive(x.ArchiveCode)); @@ -714,7 +726,8 @@ public class EmployerRepository : RepositoryBase, IEmployerRepos var employer = _context.Employers.FirstOrDefault(x => x.id == id); employer.Active(); - var workshopIds = _context.WorkshopEmployers.Where(x => x.EmployerId == id).Select(x => x.WorkshopId).ToList(); + var workshopIds = _context.WorkshopEmployers.Where(x => x.EmployerId == id).Select(x => x.WorkshopId) + .ToList(); var workshops = _context.Workshops.Where(x => workshopIds.Contains(x.id)).ToList(); workshops.ForEach(x => x.Active(x.ArchiveCode)); @@ -738,6 +751,7 @@ public class EmployerRepository : RepositoryBase, IEmployerRepos return result; } + public List GetAllEmployers() { return _context.Employers.Select(x => new EmployerViewModel @@ -753,9 +767,10 @@ public class EmployerRepository : RepositoryBase, IEmployerRepos IsLegal = x.IsLegal, }).ToList(); } - #endregion - #region Insurance + #endregion + + #region Insurance /// /// نام کارفرما @@ -763,249 +778,256 @@ public class EmployerRepository : RepositoryBase, IEmployerRepos /// /// /// - public (string employerName, bool isLegal) InsuranceEmployerByWorkshopId(long workshopId) - { - var res = _context.WorkshopEmployers.Where(x => x.WorkshopId == workshopId) - .Include(x => x.Employer).Select(x => new EmprViewModel - { - //EmployerFullName = x.Employer.IsLegal == "حقوقی" ? - // (x.Employer.EmployerLName != "#" ? x.Employer.FName + " " + x.Employer.EmployerLName: x.Employer.LName) : x.Employer.FullName, + public (string employerName, bool isLegal) InsuranceEmployerByWorkshopId(long workshopId) + { + var res = _context.WorkshopEmployers.Where(x => x.WorkshopId == workshopId) + .Include(x => x.Employer).Select(x => new EmprViewModel + { + //EmployerFullName = x.Employer.IsLegal == "حقوقی" ? + // (x.Employer.EmployerLName != "#" ? x.Employer.FName + " " + x.Employer.EmployerLName: x.Employer.LName) : x.Employer.FullName, FName = x.Employer.FName, LName = x.Employer.LName, EmployerLName = x.Employer.EmployerLName, EmployerFullName = x.Employer.FullName, IsLegal = x.Employer.IsLegal, - }); + }); - string employer = ""; - bool isLegal = res.Any(x=>x.IsLegal == "حقوقی"); + string employer = ""; + bool isLegal = res.Any(x => x.IsLegal == "حقوقی"); //اگر حقوقی بود نام همان کارفرما کافیست if (isLegal) { - var legalEmloyer = res.FirstOrDefault(x => x.IsLegal == "حقوقی"); - employer = legalEmloyer.EmployerLName != "#" ? legalEmloyer.FName + " " + legalEmloyer.EmployerLName : legalEmloyer.LName; - return (employer,true); - } - + var legalEmloyer = res.FirstOrDefault(x => x.IsLegal == "حقوقی"); + employer = legalEmloyer.EmployerLName != "#" + ? legalEmloyer.FName + " " + legalEmloyer.EmployerLName + : legalEmloyer.LName; + return (employer, true); + } + //در غیر این صورت رشته ای از نام کارفرماها ساخته می شود foreach (var item in res) - employer += (item.EmployerFullName + ","); - - - employer = employer.Substring(0, employer.Length - 1); - - return (employer,false); - } - - #endregion - - #region Api - public async Task> GetEmployerList(GetEmployerSearchModel searchModel) - { - var query = _context.Employers.Include(x => x.ContractingParty).Include(x => x.WorkshopEmployers).ThenInclude(x => x.Workshop).AsQueryable(); - - if (!string.IsNullOrWhiteSpace(searchModel.FullNameOrCompanyName)) - query = query.Where(x => x.FullName.Contains(searchModel.FullNameOrCompanyName)); + employer += (item.EmployerFullName + ","); - if (!string.IsNullOrWhiteSpace(searchModel.NationalCodeOrNationalId)) - query = query.Where(x => x.Nationalcode.Contains(searchModel.NationalCodeOrNationalId) || x.NationalId.Contains(searchModel.NationalCodeOrNationalId)); + employer = employer.Substring(0, employer.Length - 1); - if (!string.IsNullOrWhiteSpace(searchModel.IdNumberOrRegisterId)) - query = query.Where(x => x.IdNumber.Contains(searchModel.IdNumberOrRegisterId) || x.RegisterId.Contains(searchModel.IdNumberOrRegisterId)); + return (employer, false); + } + + #endregion + + #region Api + + public async Task> GetEmployerList(GetEmployerSearchModel searchModel) + { + var query = _context.Employers.Include(x => x.ContractingParty).Include(x => x.WorkshopEmployers) + .ThenInclude(x => x.Workshop).AsQueryable(); + + if (!string.IsNullOrWhiteSpace(searchModel.FullNameOrCompanyName)) + query = query.Where(x => x.FullName.Contains(searchModel.FullNameOrCompanyName)); - if (searchModel.EmployerType != LegalType.None) - { - var type = searchModel.EmployerType switch - { - LegalType.Legal => "true", - LegalType.Real => "false", - _ => "", - }; + if (!string.IsNullOrWhiteSpace(searchModel.NationalCodeOrNationalId)) + query = query.Where(x => + x.Nationalcode.Contains(searchModel.NationalCodeOrNationalId) || + x.NationalId.Contains(searchModel.NationalCodeOrNationalId)); - query = query.Where(x => x.IsLegal == type); - } - - if (searchModel.EmployerStatus != ActivationStatus.None) - { - var status = searchModel.EmployerStatus switch - { - ActivationStatus.Active => true, - ActivationStatus.DeActive => false, - _ => false - }; - query = query.Where(x => x.IsActive == status); - } - - if (!string.IsNullOrEmpty(searchModel.ContractingPartyName)) - { - query = query.Where(x => - x.ContractingParty.IsLegal == "true" - ? (x.ContractingParty.LName).Contains(searchModel.ContractingPartyName) - : (x.ContractingParty.FName + " " + x.ContractingParty.LName).Contains(searchModel - .ContractingPartyName)); - } - - var employerList = await query.Select(x => new GetEmployerListViewModel() - { - Id = x.id, - FullName = x.FullName, - HasContractingParty = x.ContractingPartyId == 30428 && x.WorkshopEmployers.Any(), - HasBlockContractingParty = x.ContractingParty.IsBlock == "true", - NationalCodeOrNationalId = x.IsLegal == "true" ? x.NationalId : x.Nationalcode, - WorkshopNames = x.WorkshopEmployers.Select(w => w.Workshop.WorkshopFullName).ToList(), - LegalType = x.IsLegal == "حقیقی" ? LegalType.Real : LegalType.Legal, - EmployerStatus = x.IsActive ? ActivationStatus.Active : ActivationStatus.DeActive, - - }).Skip(searchModel.PageIndex).Take(30).ToListAsync(); - return employerList; - } - - public async Task GetLegalEmployerDetail(long id) - { - var employer = await _context.Employers.Where(x => x.IsLegal == "حقوقی").Include(x => x.ContractingParty).Select(x => - new GetLegalEmployerDetailViewModel() - { - Id = x.id, - CompanyName = x.LName, - ContractingPartyName = x.ContractingParty.FName + " " + x.ContractingParty.LName, - DateOfBirth = x.DateOfBirth.ToFarsi(), - DateOfIssue = x.DateOfIssue.ToFarsi(), - CeoFullName = x.FName + " " + x.EmployerLName, - EmployerNo = x.EmployerNo, - FatherName = x.FatherName, - GenderStr = x.Gender, - Gender = string.IsNullOrWhiteSpace(x.Gender) ? Gender.None : - x.Gender == "مرد" ? - Gender.Male : - Gender.Female, - NationalCode = x.Nationalcode, - IdNumber = x.IdNumber, - NationalId = x.NationalId, - Nationality = x.Nationality, - PhoneNumber = x.Phone, - PlaceOfIssue = x.PlaceOfIssue, - RegisterId = x.RegisterId, - TelephoneNumber = x.AgentPhone, - CeoFName = x.FName, - CeoLName = x.EmployerLName, - GovernmentSystemInfo = new GovernmentSystemInfo - { - EServicePassword = x.EservicePassword, - EServiceUsername = x.EservicePassword, - MclPassword = x.MclsPassword, - MclUsername = x.MclsUserName, - SanaUsername = x.SanaUserName, - SanaPassword = x.SanaPassword, - TaxUsername = x.TaxOfficeUserName, - TaxPassword = x.TaxOfficepassword - }, - ContractingPartyId = x.ContractingPartyId - }).FirstOrDefaultAsync(x => x.Id == id); - - return employer; - } - - public async Task GetRealEmployerDetail(long id) - { - var employer = await _context.Employers.Where(x => x.IsLegal == "حقیقی").Include(x => x.ContractingParty).Select(x => - new GetRealEmployerDetailViewModel() - { - Id = x.id, - ContractingPartyName = x.ContractingParty.FName + " " + x.ContractingParty.LName, - DateOfBirth = x.DateOfBirth.ToFarsi(), - DateOfIssue = x.DateOfIssue.ToFarsi(), - EmployerNo = x.EmployerNo, - FatherName = x.FatherName, - GenderStr = x.Gender, - Gender = string.IsNullOrWhiteSpace(x.Gender) ? Gender.None : - x.Gender == "مرد" ? - Gender.Male : - Gender.Female, - NationalCode = x.Nationalcode, - IdNumber = x.IdNumber, - Nationality = x.Nationality, - PhoneNumber = x.Phone, - PlaceOfIssue = x.PlaceOfIssue, - TelephoneNumber = x.AgentPhone, - FullName = x.FullName, - FName = x.FName, - LName = x.LName, - GovernmentSystemInfo = new GovernmentSystemInfo - { - EServicePassword = x.EservicePassword, - EServiceUsername = x.EservicePassword, - MclPassword = x.MclsPassword, - MclUsername = x.MclsUserName, - SanaUsername = x.SanaUserName, - SanaPassword = x.SanaPassword, - TaxUsername = x.TaxOfficeUserName, - TaxPassword = x.TaxOfficepassword - }, - ContractingPartyId = x.ContractingPartyId - }).FirstOrDefaultAsync(x => x.Id == id); - - return employer; - } + if (!string.IsNullOrWhiteSpace(searchModel.IdNumberOrRegisterId)) + query = query.Where(x => + x.IdNumber.Contains(searchModel.IdNumberOrRegisterId) || + x.RegisterId.Contains(searchModel.IdNumberOrRegisterId)); - public async Task> DeactivateWithSubordinates(long id) - { - var op = new OperationResult(); - ; - using (var transaction = await _context.Database.BeginTransactionAsync()) - { - try - { - var employer = await _context.Employers - .Include(x => x.Contracts) - .Include(x => x.WorkshopEmployers) - .ThenInclude(x => x.Workshop) - .ThenInclude(x => x.Checkouts).FirstOrDefaultAsync(x => x.id == id); - if (employer == null) - { - return op.Failed("چنین آیتمی وجود ندارد"); - } + if (searchModel.EmployerType != LegalType.None) + { + var type = searchModel.EmployerType switch + { + LegalType.Legal => "true", + LegalType.Real => "false", + _ => "", + }; + + query = query.Where(x => x.IsLegal == type); + } + + if (searchModel.EmployerStatus != ActivationStatus.None) + { + var status = searchModel.EmployerStatus switch + { + ActivationStatus.Active => true, + ActivationStatus.DeActive => false, + _ => false + }; + query = query.Where(x => x.IsActive == status); + } + + if (!string.IsNullOrEmpty(searchModel.ContractingPartyName)) + { + query = query.Where(x => + x.ContractingParty.IsLegal == "true" + ? (x.ContractingParty.LName).Contains(searchModel.ContractingPartyName) + : (x.ContractingParty.FName + " " + x.ContractingParty.LName).Contains(searchModel + .ContractingPartyName)); + } + + var employerList = await query.Select(x => new GetEmployerListViewModel() + { + Id = x.id, + FullName = x.FullName, + HasContractingParty = x.ContractingPartyId == 30428 && x.WorkshopEmployers.Any(), + HasBlockContractingParty = x.ContractingParty.IsBlock == "true", + NationalCodeOrNationalId = x.IsLegal == "true" ? x.NationalId : x.Nationalcode, + WorkshopNames = x.WorkshopEmployers.Select(w => w.Workshop.WorkshopFullName).ToList(), + LegalType = x.IsLegal == "حقیقی" ? LegalType.Real : LegalType.Legal, + EmployerStatus = x.IsActive ? ActivationStatus.Active : ActivationStatus.DeActive, + }).Skip(searchModel.PageIndex).Take(30).ToListAsync(); + return employerList; + } + + public async Task GetLegalEmployerDetail(long id) + { + var employer = await _context.Employers.Where(x => x.IsLegal == "حقوقی").Include(x => x.ContractingParty) + .Select(x => + new GetLegalEmployerDetailViewModel() + { + Id = x.id, + CompanyName = x.LName, + ContractingPartyName = x.ContractingParty.FName + " " + x.ContractingParty.LName, + DateOfBirth = x.DateOfBirth.ToFarsi(), + DateOfIssue = x.DateOfIssue.ToFarsi(), + CeoFullName = x.FName + " " + x.EmployerLName, + EmployerNo = x.EmployerNo, + FatherName = x.FatherName, + GenderStr = x.Gender, + Gender = string.IsNullOrWhiteSpace(x.Gender) ? Gender.None : + x.Gender == "مرد" ? Gender.Male : + Gender.Female, + NationalCode = x.Nationalcode, + IdNumber = x.IdNumber, + NationalId = x.NationalId, + Nationality = x.Nationality, + PhoneNumber = x.Phone, + PlaceOfIssue = x.PlaceOfIssue, + RegisterId = x.RegisterId, + TelephoneNumber = x.AgentPhone, + CeoFName = x.FName, + CeoLName = x.EmployerLName, + GovernmentSystemInfo = new GovernmentSystemInfo + { + EServicePassword = x.EservicePassword, + EServiceUsername = x.EservicePassword, + MclPassword = x.MclsPassword, + MclUsername = x.MclsUserName, + SanaUsername = x.SanaUserName, + SanaPassword = x.SanaPassword, + TaxUsername = x.TaxOfficeUserName, + TaxPassword = x.TaxOfficepassword + }, + ContractingPartyId = x.ContractingPartyId + }).FirstOrDefaultAsync(x => x.Id == id); + + return employer; + } + + public async Task GetRealEmployerDetail(long id) + { + var employer = await _context.Employers.Where(x => x.IsLegal == "حقیقی").Include(x => x.ContractingParty) + .Select(x => + new GetRealEmployerDetailViewModel() + { + Id = x.id, + ContractingPartyName = x.ContractingParty.FName + " " + x.ContractingParty.LName, + DateOfBirth = x.DateOfBirth.ToFarsi(), + DateOfIssue = x.DateOfIssue.ToFarsi(), + EmployerNo = x.EmployerNo, + FatherName = x.FatherName, + GenderStr = x.Gender, + Gender = string.IsNullOrWhiteSpace(x.Gender) ? Gender.None : + x.Gender == "مرد" ? Gender.Male : + Gender.Female, + NationalCode = x.Nationalcode, + IdNumber = x.IdNumber, + Nationality = x.Nationality, + PhoneNumber = x.Phone, + PlaceOfIssue = x.PlaceOfIssue, + TelephoneNumber = x.AgentPhone, + FullName = x.FullName, + FName = x.FName, + LName = x.LName, + GovernmentSystemInfo = new GovernmentSystemInfo + { + EServicePassword = x.EservicePassword, + EServiceUsername = x.EservicePassword, + MclPassword = x.MclsPassword, + MclUsername = x.MclsUserName, + SanaUsername = x.SanaUserName, + SanaPassword = x.SanaPassword, + TaxUsername = x.TaxOfficeUserName, + TaxPassword = x.TaxOfficepassword + }, + ContractingPartyId = x.ContractingPartyId + }).FirstOrDefaultAsync(x => x.Id == id); + + return employer; + } - var workshops = employer.WorkshopEmployers.Select(x => x.Workshop).ToList(); - - var contracts = employer.Contracts.ToList(); - - var checkouts = workshops.SelectMany(x => x.Checkouts).ToList(); + public async Task> DeactivateWithSubordinates(long id) + { + var op = new OperationResult(); + ; + using (var transaction = await _context.Database.BeginTransactionAsync()) + { + try + { + var employer = await _context.Employers + .Include(x => x.Contracts) + .Include(x => x.WorkshopEmployers) + .ThenInclude(x => x.Workshop) + .ThenInclude(x => x.Checkouts).FirstOrDefaultAsync(x => x.id == id); + if (employer == null) + { + return op.Failed("چنین آیتمی وجود ندارد"); + } - employer.DeActive(); + var workshops = employer.WorkshopEmployers.Select(x => x.Workshop).ToList(); - foreach (var workshop in workshops) - { - workshop.DeActive(workshop.ArchiveCode); - } + var contracts = employer.Contracts.ToList(); - foreach (var contract in contracts) - { - contract.DeActive(); - } + var checkouts = workshops.SelectMany(x => x.Checkouts).ToList(); - foreach (var checkout in checkouts) - { - checkout.DeActive(); - } - await _context.SaveChangesAsync(); + employer.DeActive(); - await transaction.CommitAsync(); - return op.Succcedded("DeActivate"); - } - catch (Exception) - { - await transaction.RollbackAsync(); - return op.Failed("غیرفعال کردن کارفرما با خطا مواجه شد"); - } - } - } + foreach (var workshop in workshops) + { + workshop.DeActive(workshop.ArchiveCode); + } - #endregion + foreach (var contract in contracts) + { + contract.DeActive(); + } + + foreach (var checkout in checkouts) + { + checkout.DeActive(); + } + + await _context.SaveChangesAsync(); + + await transaction.CommitAsync(); + return op.Succcedded("DeActivate"); + } + catch (Exception) + { + await transaction.RollbackAsync(); + return op.Failed("غیرفعال کردن کارفرما با خطا مواجه شد"); + } + } + } + + #endregion } \ No newline at end of file diff --git a/ServiceHost/Areas/Admin/Controllers/EmployerController.cs b/ServiceHost/Areas/Admin/Controllers/EmployerController.cs index 2cd707f3..fe40ffdd 100644 --- a/ServiceHost/Areas/Admin/Controllers/EmployerController.cs +++ b/ServiceHost/Areas/Admin/Controllers/EmployerController.cs @@ -1,4 +1,5 @@ using _0_Framework.Application; +using _0_Framework.Application.Enums; using CompanyManagment.App.Contracts.Employer; using Microsoft.AspNetCore.Mvc; using ServiceHost.BaseControllers; @@ -115,9 +116,9 @@ public class EmployerController : AdminBaseController /// /// [HttpGet("select_list")] - public async Task> GetSelectList(string search, long id) + public async Task> GetSelectList(string search, long id,LegalType? legalType=null) { - return await _employerApplication.GetSelectList(search, id); + return await _employerApplication.GetSelectList(search, id,legalType); } } \ No newline at end of file