using System.Collections.Generic; using System.Linq; using _0_Framework.InfraStructure; using Company.Domain.JobAgg; using CompanyManagment.App.Contracts.Job; using Microsoft.EntityFrameworkCore; namespace CompanyManagment.EFCore.Repository; public class JobRepository: RepositoryBase, IJobRepository { private readonly CompanyContext _context; public JobRepository(CompanyContext context) : base(context) { _context = context; } public List GetJob() { return _context.Jobs.Select(x => new JobViewModel { Id = x.id, JobName = x.JobName, JobCode = x.JobCode }).ToList(); } public EditJob GetDetails(long id) { return _context.Jobs.Select(x => new EditJob { Id = x.id, JobName = x.JobName, JobCode = x.JobCode }) .FirstOrDefault(x => x.Id == id); } public List Search(JobSearchModel searchModel) { var query = _context.Jobs.Select(x => new JobViewModel { Id = x.id, JobName = x.JobName, JobCode = x.JobCode }); if (!string.IsNullOrWhiteSpace(searchModel.JobName)) query = query.Where(x => x.JobName.Contains(searchModel.JobName)); if (!string.IsNullOrWhiteSpace(searchModel.JobCode)) query = query.Where(x => x.JobCode.Contains(searchModel.JobCode)); //if(!string.IsNullOrWhiteSpace(searchModel.JobName) || !string.IsNullOrWhiteSpace(searchModel.JobCode)) // return query.OrderBy(x => x.Id).Take(1000).ToList(); return query.OrderBy(x => x.Id).ToList(); } public List SearchJobForMain(JobSearchModel searchModel) { var query = _context.Jobs.Select(x => new JobViewModel { Id = x.id, JobName = x.JobName, JobCode = x.JobCode }); if (!string.IsNullOrWhiteSpace(searchModel.JobName)) query = query.Where(x => x.JobName.Contains(searchModel.JobName)); if (!string.IsNullOrWhiteSpace(searchModel.JobCode)) query = query.Where(x => x.JobCode.Contains(searchModel.JobCode)); if (!string.IsNullOrWhiteSpace(searchModel.JobName) || !string.IsNullOrWhiteSpace(searchModel.JobCode)) return query.OrderBy(x => x.Id).Take(1000).ToList(); return query.OrderBy(x => x.Id).Take(100).ToList(); } // public async Task> GetJobListByText(string searchtText) public List GetJobListByText(string searchtText) { var query = _context.Jobs.Select(x => new JobViewModel { Id = x.id, JobName = x.JobName, JobCode = x.JobCode }); if (!string.IsNullOrWhiteSpace(searchtText)) { query = query.Where(x => x.JobName.Contains(searchtText)); } //if (!string.IsNullOrWhiteSpace(searchtText)) // query = query.Where(x => (x.JobName + " " + x.JobCode).Contains(searchtText)); //return query.OrderBy(x => x.Id).ToList(); //var param = new SqlParameter("@InputText", searchtText); //var jobList = _context.Jobs.FromSqlRaw("SelectQuery_AllJobs @InputText", param).Select(x => new JobViewModel // { // Id = x.id, // JobName = x.JobName, // JobCode = x.JobCode // }).ToList(); //return jobList; //var jobList = _context.Jobs.FromSqlInterpolated($"SelectQuery_AllJobs {searchtText}").AsNoTracking().ToList(); var jobViewModelList = query.Take(100).Select(x => new JobViewModel { Id = x.Id, JobName = x.JobName+ " " + '-' + " " + x.JobCode, JobCode = x.JobCode }).ToList(); return jobViewModelList; } public List GetJobListByWorkshopId(long workshopId) { long insuranceJobId = 0; var workshop = _context.Workshops.Where(x => x.id == workshopId).FirstOrDefault(); List jobIds = new List(); if (workshop != null && workshop.FixedSalary) { 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 { Id = x.id, JobName = x.JobName, JobCode = x.JobCode }); return query.OrderBy(x => x.JobName).ToList(); } public List GetJobListByTextAndWorkshopId(string textSearch, long workshopId) { var jobList = _context.Jobs.FromSqlInterpolated($"SelectQuery_AllJobsByWorkshopId {textSearch},{workshopId}").AsNoTracking().ToList(); var jobViewModelList = jobList.Select(x => new JobViewModel { Id = x.id, JobName = x.JobName, JobCode = x.JobCode }).Take(100).ToList(); return jobViewModelList; } }