Files
Backend-Api/CompanyManagment.EFCore/Repository/JobRepository.cs
2025-10-14 04:21:50 +03:30

186 lines
6.2 KiB
C#

using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using _0_Framework.InfraStructure;
using Company.Domain.JobAgg;
using CompanyManagment.App.Contracts.Job;
using Microsoft.EntityFrameworkCore;
namespace CompanyManagment.EFCore.Repository;
public class JobRepository: RepositoryBase<long, Job>, IJobRepository
{
private readonly CompanyContext _context;
public JobRepository(CompanyContext context) : base(context)
{
_context = context;
}
public List<JobViewModel> 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<JobViewModel> 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<JobViewModel> 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<List<JobViewModel>> JobSearchSelect(string searchtText)
{
if (!string.IsNullOrWhiteSpace(searchtText))
{
var query =_context.Jobs.Select(x => new JobViewModel
{
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
}).ToListAsync();
return jobViewModelList;
}
else
{
return new List<JobViewModel>();
}
}
// public async Task<List<JobViewModel>> GetJobListByText(string searchtText)
public List<JobViewModel> 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<Job>("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<JobViewModel> GetJobListByWorkshopId(long workshopId)
{
long insuranceJobId = 0;
var workshop = _context.Workshops.Where(x => x.id == workshopId).FirstOrDefault();
List<long> jobIds = new List<long>();
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<JobViewModel> 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;
}
}