Optimise AMO Speed

This commit is contained in:
SamSys
2025-05-25 21:40:07 +03:30
parent 7bcc052ec6
commit 3e1758d35c

View File

@@ -1,5 +1,6 @@
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Threading.Tasks;
using _0_Framework.Application;
@@ -25,6 +26,7 @@ public class AdminMonthlyOverviewRepository : RepositoryBase<long, AdminMonthlyO
public async Task<List<AdminMonthlyOverviewListViewModel>> GetWorkshopStatus(AdminMonthlyOverviewSearchModel searchModel)
{
var year = searchModel.Year;
var month = searchModel.Month;
var accountId = searchModel.AdminAccountId;
@@ -40,17 +42,15 @@ public class AdminMonthlyOverviewRepository : RepositoryBase<long, AdminMonthlyO
return [];
// دریافت طرف حساب های معتبر برای تاریخ مورد نظر
var contractingPartyIds = await _companyContext.InstitutionContractSet.AsNoTracking()
var contractingPartyIds = _companyContext.InstitutionContractSet.AsNoTracking()
.Where(c => c.ContractStartGr <= targetDate && c.ContractEndGr >= targetDate && c.IsActiveString == "true")
.Select(c => c.ContractingPartyId)
.ToListAsync();
.Select(c => c.ContractingPartyId);
// دریافت کارگاه‌های مرتبط با اکانت
var accountWorkshopIds = await _companyContext.WorkshopAccounts
var accountWorkshopIds = _companyContext.WorkshopAccounts
.AsNoTracking()
.Where(w => w.AccountId == accountId)
.Select(w => w.WorkshopId)
.ToListAsync();
.Select(w => w.WorkshopId);
// دریافت کارگاه‌های مربوط به طرف حساب و اکانت
// Replace the selected code with the following to return a list of anonymous objects containing both workshop and contractingParty
@@ -92,6 +92,7 @@ public class AdminMonthlyOverviewRepository : RepositoryBase<long, AdminMonthlyO
.Except(adminMonthlyOverviewWorkshopIds)
.ToList();
// ایجاد رکوردهای AdminMonthlyOverview که وجود ندارند
if (notExistAdminMonthlyReviewsWorkshopIds.Any())
await CreateRangeAdminMonthlyOverview(notExistAdminMonthlyReviewsWorkshopIds, month, year);
@@ -99,7 +100,6 @@ public class AdminMonthlyOverviewRepository : RepositoryBase<long, AdminMonthlyO
// به‌روزرسانی وضعیت‌ها
await UpdateAdminMonthlyOverviewStatus(year, month, workshopIds);
if (searchModel.ActivationStatus != IsActive.None)
{
var isBlock = searchModel.ActivationStatus == IsActive.True ? "true" : "false";
@@ -159,6 +159,7 @@ public class AdminMonthlyOverviewRepository : RepositoryBase<long, AdminMonthlyO
IsBlock = contractingParty?.IsBlock == "true"
};
}).OrderBy(x => x.IsBlock).ToList();
return adminMonthlyOverviewList;
}