feat: optimize join queries in InsuranceListRepository for improved data retrieval

This commit is contained in:
2025-10-12 12:23:56 +03:30
parent af1388f0d7
commit 5d16020c6a

View File

@@ -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,