From e4c41bb70495a694362cfc0581e7ac359044bf45 Mon Sep 17 00:00:00 2001 From: SamSys Date: Mon, 5 Jan 2026 16:41:58 +0330 Subject: [PATCH] JobSelectList api --- Company.Domain/JobAgg/IJobRepository.cs | 2 +- .../Job/IJobApplication.cs | 4 +- .../Job/JobViewModel.cs | 7 +++ .../JobApplication.cs | 2 +- .../Repository/JobRepository.cs | 53 +++++++++---------- .../ClassificationSchemeController.cs | 17 +++++- .../Workshops/ClassificationScheme.cshtml.cs | 9 +--- 7 files changed, 51 insertions(+), 43 deletions(-) diff --git a/Company.Domain/JobAgg/IJobRepository.cs b/Company.Domain/JobAgg/IJobRepository.cs index 69514cdb..1f0e2b69 100644 --- a/Company.Domain/JobAgg/IJobRepository.cs +++ b/Company.Domain/JobAgg/IJobRepository.cs @@ -17,7 +17,7 @@ public interface IJobRepository : IRepository /// /// /// - Task> JobSearchSelect(string searchtText); + Task> JobSearchSelect(string searchtText); // Task> GetJobListByText(string searchtText); List GetJobListByText(string searchtText); List GetJobListByWorkshopId(long workshopId); diff --git a/CompanyManagment.App.Contracts/Job/IJobApplication.cs b/CompanyManagment.App.Contracts/Job/IJobApplication.cs index 4d4379cf..45eff5ca 100644 --- a/CompanyManagment.App.Contracts/Job/IJobApplication.cs +++ b/CompanyManagment.App.Contracts/Job/IJobApplication.cs @@ -13,13 +13,13 @@ public interface IJobApplication List Search(JobSearchModel searchModel); List SearchJobForMain(JobSearchModel searchModel); //Task> GetJobListByText(string searchtText); - + /// /// جستجوی مشاغل برای سلکت تو /// /// /// - Task> JobSearchSelect(string searchtText); + Task> JobSearchSelect(string searchtText); List GetJobListByText(string searchtText); List GetJobListByWorkshopId(long workshopId); List GetJobListByTextAndWorkshopId(string textSearch, long workshopId); diff --git a/CompanyManagment.App.Contracts/Job/JobViewModel.cs b/CompanyManagment.App.Contracts/Job/JobViewModel.cs index ace12d64..d452b90f 100644 --- a/CompanyManagment.App.Contracts/Job/JobViewModel.cs +++ b/CompanyManagment.App.Contracts/Job/JobViewModel.cs @@ -7,4 +7,11 @@ public class JobViewModel public string JobCode { get; set; } public string SearchResultTitle { get; set; } public string SearchResultCode { get; set; } +} + + +public class JobListDto +{ + public long Id { get; set; } + public string JobName { get; set; } } \ No newline at end of file diff --git a/CompanyManagment.Application/JobApplication.cs b/CompanyManagment.Application/JobApplication.cs index c10c76fa..3e0fc12e 100644 --- a/CompanyManagment.Application/JobApplication.cs +++ b/CompanyManagment.Application/JobApplication.cs @@ -67,7 +67,7 @@ public class JobApplication : IJobApplication return _jobRepository.SearchJobForMain(searchModel); } - public async Task> JobSearchSelect(string searchtText) + public async Task> JobSearchSelect(string searchtText) { return await _jobRepository.JobSearchSelect(searchtText); } diff --git a/CompanyManagment.EFCore/Repository/JobRepository.cs b/CompanyManagment.EFCore/Repository/JobRepository.cs index e11906f3..0c7df1b6 100644 --- a/CompanyManagment.EFCore/Repository/JobRepository.cs +++ b/CompanyManagment.EFCore/Repository/JobRepository.cs @@ -8,7 +8,7 @@ using Microsoft.EntityFrameworkCore; namespace CompanyManagment.EFCore.Repository; -public class JobRepository: RepositoryBase, IJobRepository +public class JobRepository : RepositoryBase, IJobRepository { private readonly CompanyContext _context; public JobRepository(CompanyContext context) : base(context) @@ -23,7 +23,7 @@ public class JobRepository: RepositoryBase, IJobRepository Id = x.id, JobName = x.JobName, JobCode = x.JobCode - + }).ToList(); } @@ -31,14 +31,14 @@ public class JobRepository: RepositoryBase, IJobRepository public EditJob GetDetails(long id) { return _context.Jobs.Select(x => new EditJob - { - Id = x.id, - JobName = x.JobName, - JobCode = x.JobCode - + { + Id = x.id, + JobName = x.JobName, + JobCode = x.JobCode - }) + + }) .FirstOrDefault(x => x.Id == id); } @@ -84,34 +84,29 @@ public class JobRepository: RepositoryBase, IJobRepository } - public async Task> JobSearchSelect(string searchtText) + public async Task> JobSearchSelect(string searchtText) { - + if (!string.IsNullOrWhiteSpace(searchtText)) { - var query =_context.Jobs.Select(x => new JobViewModel + var query = _context.Jobs.Where(x => x.JobName.Contains(searchtText)); + + var jobViewModelList = await query.Take(100).OrderBy(x => x.JobName.Length).Select(x => new JobListDto() { Id = x.id, - JobName = x.JobName, - JobCode = x.JobCode - }); - query = query.Where(x => x.JobName.Contains(searchtText)); - var jobViewModelList =await query.Take(100).Select(x => new JobViewModel - { - Id = x.Id, - JobName = x.JobName, - JobCode = x.JobCode + JobName = $"{x.JobName} - {x.JobCode}", + }).ToListAsync(); return jobViewModelList; } - else - { - return new List(); - } + + + return new List(); + } // public async Task> GetJobListByText(string searchtText) - public List GetJobListByText(string searchtText) + public List GetJobListByText(string searchtText) { var query = _context.Jobs.Select(x => new JobViewModel { @@ -143,7 +138,7 @@ public class JobRepository: RepositoryBase, IJobRepository var jobViewModelList = query.Take(100).Select(x => new JobViewModel { Id = x.Id, - JobName = x.JobName+ " " + '-' + " " + x.JobCode, + JobName = x.JobName + " " + '-' + " " + x.JobCode, JobCode = x.JobCode }).ToList(); return jobViewModelList; @@ -156,12 +151,12 @@ public class JobRepository: RepositoryBase, IJobRepository List jobIds = new List(); if (workshop != null && workshop.FixedSalary) { - insuranceJobId = workshop.InsuranceJobId == null? 0 : (long)workshop.InsuranceJobId; + insuranceJobId = workshop.InsuranceJobId == null ? 0 : (long)workshop.InsuranceJobId; var insuranceJobIteIds = _context.InsuranceJobItems.Where(x => x.InsuranceJobId == insuranceJobId).Select(x => x.id).ToList(); jobIds = _context.InsuranceJobAndJobsSet.Where(x => insuranceJobIteIds.Contains(x.InsuranceJobItemId)).Select(x => x.JobId).ToList(); } //id==10 --->کارفرما اضافه می شود - var query = _context.Jobs.Where(x=>x.id==10 || jobIds.Contains(x.id)).Select(x => new JobViewModel + var query = _context.Jobs.Where(x => x.id == 10 || jobIds.Contains(x.id)).Select(x => new JobViewModel { Id = x.id, JobName = x.JobName, @@ -181,6 +176,6 @@ public class JobRepository: RepositoryBase, IJobRepository }).Take(100).ToList(); return jobViewModelList; } - + } \ No newline at end of file diff --git a/ServiceHost/Areas/Admin/Controllers/ClassificationSchemeController.cs b/ServiceHost/Areas/Admin/Controllers/ClassificationSchemeController.cs index 1cdba86a..3fd584eb 100644 --- a/ServiceHost/Areas/Admin/Controllers/ClassificationSchemeController.cs +++ b/ServiceHost/Areas/Admin/Controllers/ClassificationSchemeController.cs @@ -1,6 +1,7 @@ using _0_Framework.Application; using CompanyManagment.App.Contracts.ClassificationScheme; using CompanyManagment.App.Contracts.Employee; +using CompanyManagment.App.Contracts.Job; using CompanyManagment.App.Contracts.PaymentInstrument; using CompanyManagment.Application; using Microsoft.AspNetCore.Http; @@ -13,12 +14,13 @@ public class ClassificationSchemeController : AdminBaseController { private readonly IClassificationSchemeApplication _classificationSchemeApplication; private readonly IAuthHelper _authHelper; - + private readonly IJobApplication _jobApplication; - public ClassificationSchemeController(IClassificationSchemeApplication classificationSchemeApplication, IAuthHelper authHelper) + public ClassificationSchemeController(IClassificationSchemeApplication classificationSchemeApplication, IAuthHelper authHelper, IJobApplication jobApplication) { _classificationSchemeApplication = classificationSchemeApplication; _authHelper = authHelper; + _jobApplication = jobApplication; } #region SchemeTab @@ -123,6 +125,17 @@ public class ClassificationSchemeController : AdminBaseController return result; } + /// + /// سلکت لیست مشاغل + /// + /// + /// + [HttpGet("JobSelectList")] + public async Task> GetJobSelectList(string searchJob) + { + return await _jobApplication.JobSearchSelect(searchJob); + } + /// /// چک میکند که آیا امکان حذف شغل از گروه وجود دارد /// diff --git a/ServiceHost/Areas/Admin/Pages/Company/Workshops/ClassificationScheme.cshtml.cs b/ServiceHost/Areas/Admin/Pages/Company/Workshops/ClassificationScheme.cshtml.cs index 5b38d580..80bdea3e 100644 --- a/ServiceHost/Areas/Admin/Pages/Company/Workshops/ClassificationScheme.cshtml.cs +++ b/ServiceHost/Areas/Admin/Pages/Company/Workshops/ClassificationScheme.cshtml.cs @@ -154,14 +154,7 @@ public class ClassificationSchemeModel : PageModel { var jobs = _jobApplication.JobSearchSelect(textSearch).GetAwaiter().GetResult(); - jobs = jobs.OrderBy(x => x.JobName.Length).ToList().Select(x => new JobViewModel - { - Id = x.Id, - JobName = x.JobName, - JobCode = x.JobCode, - SearchResultTitle = x.JobName, - SearchResultCode = x.JobCode - }).ToList(); + return new JsonResult(new { IsSuccedded = true,