186 lines
6.2 KiB
C#
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;
|
|
}
|
|
|
|
|
|
} |