This commit is contained in:
@@ -500,29 +500,27 @@ MULTIPLE discount / markup ITEMS
|
||||
.ToArrayAsync();
|
||||
//order the results back into original
|
||||
var orderedList = from id in batch join z in batchResults on id equals z.Id select z;
|
||||
|
||||
//cache enum list
|
||||
var ContractOverrideTypeEnumList = await AyaNova.Api.Controllers.EnumListController.GetEnumList(
|
||||
StringUtil.TrimTypeName(typeof(ContractOverrideType).ToString()),
|
||||
UserTranslationId,
|
||||
CurrentUserRoles);
|
||||
//cache translations needed
|
||||
var PreTrans = await TranslationBiz.GetSubsetStaticAsync(new List<string> { "TimeSpanDays", "TimeSpanHours", "TimeSpanMinutes", "TimeSpanSeconds" }, UserTranslationId);
|
||||
batchResults=null;
|
||||
foreach (Contract w in orderedList)
|
||||
{
|
||||
if (!ReportRenderManager.KeepGoing(jobId)) return null;
|
||||
await PopulateVizFields(w, ContractOverrideTypeEnumList, PreTrans);
|
||||
await PopulateVizFields(w);
|
||||
var jo = JObject.FromObject(w);
|
||||
if (!JsonUtil.JTokenIsNullOrEmpty(jo["CustomFields"]))
|
||||
jo["CustomFields"] = JObject.Parse((string)jo["CustomFields"]);
|
||||
ReportData.Add(jo);
|
||||
}
|
||||
orderedList=null;
|
||||
}
|
||||
vc.Clear();
|
||||
return ReportData;
|
||||
}
|
||||
//request cache for viz fields
|
||||
private VizCache vc = new VizCache();
|
||||
|
||||
|
||||
//populate viz fields from provided object
|
||||
private async Task PopulateVizFields(Contract o, List<NameIdItem> contractOverrideTypeEnumList = null, Dictionary<string, string> preTrans = null)
|
||||
private async Task PopulateVizFields(Contract o)
|
||||
{
|
||||
if (contractOverrideTypeEnumList == null)
|
||||
contractOverrideTypeEnumList = await AyaNova.Api.Controllers.EnumListController.GetEnumList(
|
||||
@@ -548,12 +546,32 @@ MULTIPLE discount / markup ITEMS
|
||||
i.OverrideTypeViz = contractOverrideTypeEnumList.Where(x => x.Id == (long)i.OverrideType).Select(x => x.Name).First();
|
||||
foreach (var i in o.ContractServiceRateOverrideItems)
|
||||
i.OverrideTypeViz = contractOverrideTypeEnumList.Where(x => x.Id == (long)i.OverrideType).Select(x => x.Name).First();
|
||||
foreach (var i in o.ServiceRateItems)
|
||||
i.ServiceRateViz = await ct.ServiceRate.AsNoTracking().Where(x => x.Id == i.ServiceRateId).Select(x => x.Name).FirstOrDefaultAsync();
|
||||
foreach (var i in o.TravelRateItems)
|
||||
i.TravelRateViz = await ct.TravelRate.AsNoTracking().Where(x => x.Id == i.TravelRateId).Select(x => x.Name).FirstOrDefaultAsync();
|
||||
}
|
||||
|
||||
// foreach (var i in o.ServiceRateItems)
|
||||
// i.ServiceRateViz = await ct.ServiceRate.AsNoTracking().Where(x => x.Id == i.ServiceRateId).Select(x => x.Name).FirstOrDefaultAsync();
|
||||
foreach (var i in o.ServiceRateItems)
|
||||
{
|
||||
if (!vc.Has("servicerate", i.ServiceRateId))
|
||||
{
|
||||
vc.Add(await ct.ServiceRate.AsNoTracking().Where(x => x.Id == i.ServiceRateId).Select(x => x.Name).FirstOrDefaultAsync(), "servicerate", i.ServiceRateId);
|
||||
}
|
||||
i.ServiceRateViz = vc.Get("servicerate", i.ServiceRateId);
|
||||
}
|
||||
|
||||
// foreach (var i in o.TravelRateItems)
|
||||
// i.TravelRateViz = await ct.TravelRate.AsNoTracking().Where(x => x.Id == i.TravelRateId).Select(x => x.Name).FirstOrDefaultAsync();
|
||||
|
||||
foreach (var i in o.TravelRateItems)
|
||||
{
|
||||
if (!vc.Has("travelrate", i.TravelRateId))
|
||||
{
|
||||
vc.Add(await ct.TravelRate.AsNoTracking().Where(x => x.Id == i.TravelRateId).Select(x => x.Name).FirstOrDefaultAsync(), "travelrate", i.TravelRateId);
|
||||
}
|
||||
i.TravelRateViz = vc.Get("travelrate", i.TravelRateId);
|
||||
}
|
||||
}
|
||||
private List<NameIdItem> contractOverrideTypeEnumList = null;
|
||||
private Dictionary<string, string> preTrans = null;
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
// IMPORT EXPORT
|
||||
|
||||
@@ -341,7 +341,6 @@ namespace AyaNova.Biz
|
||||
//query for this batch, comes back in db natural order unfortunately
|
||||
var batchResults = await ct.Customer.AsNoTracking().Where(z => batch.Contains(z.Id)).ToArrayAsync();
|
||||
|
||||
|
||||
//order the results back into original
|
||||
//What is happening here:
|
||||
//for performance the query is batching a bunch at once by fetching a block of items from the sql server
|
||||
@@ -350,7 +349,7 @@ namespace AyaNova.Biz
|
||||
//This would not be necessary if just fetching each one at a time individually (like in workorder get report data)
|
||||
|
||||
var orderedList = from id in batch join z in batchResults on id equals z.Id select z;
|
||||
|
||||
batchResults = null;
|
||||
|
||||
foreach (Customer w in orderedList)
|
||||
{
|
||||
@@ -361,17 +360,34 @@ namespace AyaNova.Biz
|
||||
jo["CustomFields"] = JObject.Parse((string)jo["CustomFields"]);
|
||||
ReportData.Add(jo);
|
||||
}
|
||||
orderedList = null;
|
||||
}
|
||||
vc.Clear();
|
||||
return ReportData;
|
||||
}
|
||||
|
||||
//populate viz fields from provided object
|
||||
private async Task PopulateVizFields(Customer o)
|
||||
{
|
||||
|
||||
if (o.HeadOfficeId != null)
|
||||
o.HeadOfficeViz = await ct.HeadOffice.AsNoTracking().Where(x => x.Id == o.HeadOfficeId).Select(x => x.Name).FirstOrDefaultAsync();
|
||||
{
|
||||
if (!vc.Has("headoffice", o.HeadOfficeId))
|
||||
{
|
||||
vc.Add(await ct.HeadOffice.AsNoTracking().Where(x => x.Id == o.HeadOfficeId).Select(x => x.Name).FirstOrDefaultAsync(), "headoffice", o.HeadOfficeId);
|
||||
}
|
||||
o.HeadOfficeViz = vc.Get("headoffice", o.HeadOfficeId);
|
||||
}
|
||||
|
||||
|
||||
if (o.ContractId != null)
|
||||
o.ContractViz = await ct.Contract.AsNoTracking().Where(x => x.Id == o.ContractId).Select(x => x.Name).FirstOrDefaultAsync();
|
||||
{
|
||||
if (!vc.Has("contract", o.ContractId))
|
||||
{
|
||||
vc.Add(await ct.Contract.AsNoTracking().Where(x => x.Id == o.ContractId).Select(x => x.Name).FirstOrDefaultAsync(), "contract", o.ContractId);
|
||||
}
|
||||
o.ContractViz = vc.Get("contract", o.ContractId);
|
||||
}
|
||||
|
||||
//Too slow and complex for EF Core
|
||||
using (var command = ct.Database.GetDbConnection().CreateCommand())
|
||||
@@ -396,6 +412,9 @@ namespace AyaNova.Biz
|
||||
}
|
||||
}
|
||||
|
||||
//request cache for viz fields
|
||||
private VizCache vc = new VizCache();
|
||||
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
// IMPORT EXPORT
|
||||
|
||||
@@ -822,12 +822,12 @@ namespace AyaNova.Biz
|
||||
|
||||
var idList = dataListSelectedRequest.SelectedRowIds;
|
||||
JArray ReportData = new JArray();
|
||||
|
||||
List<PM> batchResults = new List<PM>();
|
||||
while (idList.Any())
|
||||
{
|
||||
var batch = idList.Take(IReportAbleObject.REPORT_DATA_BATCH_SIZE);
|
||||
idList = idList.Skip(IReportAbleObject.REPORT_DATA_BATCH_SIZE).ToArray();
|
||||
List<PM> batchResults = new List<PM>();
|
||||
batchResults.Clear();
|
||||
foreach (long batchId in batch)
|
||||
batchResults.Add(await PMGetPartialAsync(dataListSelectedRequest.AType, batchId, dataListSelectedRequest.IncludeWoItemDescendants, true));
|
||||
|
||||
|
||||
@@ -798,12 +798,12 @@ namespace AyaNova.Biz
|
||||
|
||||
var idList = dataListSelectedRequest.SelectedRowIds;
|
||||
JArray ReportData = new JArray();
|
||||
|
||||
List<Quote> batchResults = new List<Quote>();
|
||||
while (idList.Any())
|
||||
{
|
||||
var batch = idList.Take(IReportAbleObject.REPORT_DATA_BATCH_SIZE);
|
||||
idList = idList.Skip(IReportAbleObject.REPORT_DATA_BATCH_SIZE).ToArray();
|
||||
List<Quote> batchResults = new List<Quote>();
|
||||
batchResults.Clear();
|
||||
foreach (long batchId in batch)
|
||||
batchResults.Add(await QuoteGetPartialAsync(dataListSelectedRequest.AType, batchId, dataListSelectedRequest.IncludeWoItemDescendants, true));
|
||||
|
||||
@@ -1639,7 +1639,7 @@ namespace AyaNova.Biz
|
||||
//
|
||||
private async Task ItemPopulateVizFields(QuoteItem o, bool populateForReporting)
|
||||
{
|
||||
|
||||
|
||||
if (o.WorkOrderItemStatusId != null)
|
||||
{
|
||||
string value = vc.Get("woistatname", o.WorkOrderItemStatusId);
|
||||
@@ -1958,7 +1958,7 @@ namespace AyaNova.Biz
|
||||
//
|
||||
private async Task ExpensePopulateVizFields(QuoteItemExpense o, bool calculateTotalsOnly = false)
|
||||
{
|
||||
|
||||
|
||||
if (calculateTotalsOnly == false)
|
||||
{
|
||||
if (o.UserId != null)
|
||||
@@ -3156,7 +3156,7 @@ namespace AyaNova.Biz
|
||||
private async Task OutsideServicePopulateVizFields(QuoteItemOutsideService o, bool calculateTotalsOnly = false)
|
||||
{
|
||||
if (calculateTotalsOnly == false)
|
||||
{
|
||||
{
|
||||
if (o.UnitId != 0)
|
||||
{
|
||||
if (!vc.Has("unitserial", o.UnitId))
|
||||
@@ -3933,7 +3933,7 @@ namespace AyaNova.Biz
|
||||
//
|
||||
private async Task ScheduledUserPopulateVizFields(QuoteItemScheduledUser o)
|
||||
{
|
||||
if (o.UserId != null)
|
||||
if (o.UserId != null)
|
||||
{
|
||||
if (!vc.Has("user", o.UserId))
|
||||
{
|
||||
@@ -4502,7 +4502,7 @@ namespace AyaNova.Biz
|
||||
//
|
||||
private async Task TravelPopulateVizFields(QuoteItemTravel o, bool calculateTotalsOnly = false)
|
||||
{
|
||||
if (calculateTotalsOnly == false)
|
||||
if (calculateTotalsOnly == false)
|
||||
{
|
||||
if (o.UserId != null)
|
||||
{
|
||||
@@ -4903,7 +4903,7 @@ namespace AyaNova.Biz
|
||||
//
|
||||
private async Task UnitPopulateVizFields(QuoteItemUnit o, bool populateForReporting)
|
||||
{
|
||||
//see if it's in the cache already, populate the cache fully if not
|
||||
//see if it's in the cache already, populate the cache fully if not
|
||||
bool UnitHasModel = false;
|
||||
if (!vc.Has("unitserial", o.UnitId))
|
||||
{
|
||||
@@ -4967,7 +4967,7 @@ namespace AyaNova.Biz
|
||||
}
|
||||
o.UnitViz = vc.Get("unitserial", o.UnitId);
|
||||
o.UnitDescriptionViz = vc.Get("unitdesc", o.UnitId);
|
||||
// o.UnitMeteredViz = vc.GetAsBool("unitmetered", o.UnitId);
|
||||
// o.UnitMeteredViz = vc.GetAsBool("unitmetered", o.UnitId);
|
||||
if (populateForReporting)
|
||||
{
|
||||
o.AddressViz = vc.Get("unitaddr", o.UnitId);
|
||||
|
||||
@@ -949,13 +949,13 @@ namespace AyaNova.Biz
|
||||
|
||||
var idList = dataListSelectedRequest.SelectedRowIds;
|
||||
JArray ReportData = new JArray();
|
||||
|
||||
List<WorkOrder> batchResults = new List<WorkOrder>();
|
||||
while (idList.Any())
|
||||
{
|
||||
if (!ReportRenderManager.KeepGoing(jobId)) return null;
|
||||
var batch = idList.Take(IReportAbleObject.REPORT_DATA_BATCH_SIZE);
|
||||
idList = idList.Skip(IReportAbleObject.REPORT_DATA_BATCH_SIZE).ToArray();
|
||||
List<WorkOrder> batchResults = new List<WorkOrder>();
|
||||
batchResults.Clear();
|
||||
foreach (long batchId in batch)
|
||||
{
|
||||
if (!ReportRenderManager.KeepGoing(jobId)) return null;
|
||||
@@ -986,9 +986,9 @@ namespace AyaNova.Biz
|
||||
}
|
||||
ReportData.Add(jo);
|
||||
}
|
||||
batchResults.Clear();
|
||||
|
||||
}
|
||||
|
||||
|
||||
vc.Clear();
|
||||
oc.Clear();
|
||||
return ReportData;
|
||||
|
||||
Reference in New Issue
Block a user