feat: optimize join queries in InsuranceListRepository for improved data retrieval
This commit is contained in:
@@ -1594,19 +1594,25 @@ public class InsuranceListRepository : RepositoryBase<long, InsuranceList>, IIns
|
||||
.Where(x => x.LeftWorkInsurances.Any(l=>l.StartWorkDate <= firstDayOfMonth &&
|
||||
(l.LeftWorkDate == null || l.LeftWorkDate >= firstDayOfMonth)));
|
||||
|
||||
var res = await notCreatedWorkshop
|
||||
.GroupJoin(_context.WorkshopEmployers,
|
||||
var res = await notCreatedWorkshop
|
||||
.Join(
|
||||
_context.WorkshopEmployers
|
||||
.OrderBy(we => we.WorkshopId)
|
||||
.ThenBy(we => we.EmployerId)
|
||||
.GroupBy(we => we.WorkshopId)
|
||||
.Select(g => g.First()),
|
||||
workshop => workshop.id,
|
||||
workshopEmployer => workshopEmployer.WorkshopId,
|
||||
(workshop, workshopEmployer) => new { workshop, workshopEmployer })
|
||||
.SelectMany(x => x.workshopEmployer.DefaultIfEmpty(), (x, workshopEmployer) => new { x.workshop, workshopEmployer })
|
||||
.GroupJoin(_context.Employers,
|
||||
allResult => allResult.workshopEmployer.EmployerId,
|
||||
employer => employer.id,
|
||||
(allResult, employer) => new { allResult.workshop, allResult.workshopEmployer, employer })
|
||||
.SelectMany(x => x.employer.DefaultIfEmpty(), (x, employer) => new { x.workshop, x.workshopEmployer, employer })
|
||||
.Select(x => new InsuranceListViewModel
|
||||
{
|
||||
employer => employer.WorkshopId,
|
||||
(workshop, workshopEmployer) => new
|
||||
{
|
||||
workshop,
|
||||
workshopEmployer,
|
||||
employer = _context.Employers
|
||||
.FirstOrDefault(e => e.id == workshopEmployer.EmployerId)
|
||||
}
|
||||
)
|
||||
.Select(x=> new InsuranceListViewModel
|
||||
{
|
||||
WorkShopId = x.workshop.id,
|
||||
WorkShopCode = x.workshop.InsuranceCode,
|
||||
WorkShopName = x.workshop.InsuranceWorkshopInfo != null ? x.workshop.InsuranceWorkshopInfo.WorkshopName : x.workshop.WorkshopFullName,
|
||||
|
||||
Reference in New Issue
Block a user