This commit is contained in:
@@ -500,29 +500,27 @@ MULTIPLE discount / markup ITEMS
|
|||||||
.ToArrayAsync();
|
.ToArrayAsync();
|
||||||
//order the results back into original
|
//order the results back into original
|
||||||
var orderedList = from id in batch join z in batchResults on id equals z.Id select z;
|
var orderedList = from id in batch join z in batchResults on id equals z.Id select z;
|
||||||
|
batchResults=null;
|
||||||
//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);
|
|
||||||
foreach (Contract w in orderedList)
|
foreach (Contract w in orderedList)
|
||||||
{
|
{
|
||||||
if (!ReportRenderManager.KeepGoing(jobId)) return null;
|
if (!ReportRenderManager.KeepGoing(jobId)) return null;
|
||||||
await PopulateVizFields(w, ContractOverrideTypeEnumList, PreTrans);
|
await PopulateVizFields(w);
|
||||||
var jo = JObject.FromObject(w);
|
var jo = JObject.FromObject(w);
|
||||||
if (!JsonUtil.JTokenIsNullOrEmpty(jo["CustomFields"]))
|
if (!JsonUtil.JTokenIsNullOrEmpty(jo["CustomFields"]))
|
||||||
jo["CustomFields"] = JObject.Parse((string)jo["CustomFields"]);
|
jo["CustomFields"] = JObject.Parse((string)jo["CustomFields"]);
|
||||||
ReportData.Add(jo);
|
ReportData.Add(jo);
|
||||||
}
|
}
|
||||||
|
orderedList=null;
|
||||||
}
|
}
|
||||||
|
vc.Clear();
|
||||||
return ReportData;
|
return ReportData;
|
||||||
}
|
}
|
||||||
|
//request cache for viz fields
|
||||||
|
private VizCache vc = new VizCache();
|
||||||
|
|
||||||
|
|
||||||
//populate viz fields from provided object
|
//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)
|
if (contractOverrideTypeEnumList == null)
|
||||||
contractOverrideTypeEnumList = await AyaNova.Api.Controllers.EnumListController.GetEnumList(
|
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();
|
i.OverrideTypeViz = contractOverrideTypeEnumList.Where(x => x.Id == (long)i.OverrideType).Select(x => x.Name).First();
|
||||||
foreach (var i in o.ContractServiceRateOverrideItems)
|
foreach (var i in o.ContractServiceRateOverrideItems)
|
||||||
i.OverrideTypeViz = contractOverrideTypeEnumList.Where(x => x.Id == (long)i.OverrideType).Select(x => x.Name).First();
|
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
|
// IMPORT EXPORT
|
||||||
|
|||||||
@@ -341,7 +341,6 @@ namespace AyaNova.Biz
|
|||||||
//query for this batch, comes back in db natural order unfortunately
|
//query for this batch, comes back in db natural order unfortunately
|
||||||
var batchResults = await ct.Customer.AsNoTracking().Where(z => batch.Contains(z.Id)).ToArrayAsync();
|
var batchResults = await ct.Customer.AsNoTracking().Where(z => batch.Contains(z.Id)).ToArrayAsync();
|
||||||
|
|
||||||
|
|
||||||
//order the results back into original
|
//order the results back into original
|
||||||
//What is happening here:
|
//What is happening here:
|
||||||
//for performance the query is batching a bunch at once by fetching a block of items from the sql server
|
//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)
|
//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;
|
var orderedList = from id in batch join z in batchResults on id equals z.Id select z;
|
||||||
|
batchResults = null;
|
||||||
|
|
||||||
foreach (Customer w in orderedList)
|
foreach (Customer w in orderedList)
|
||||||
{
|
{
|
||||||
@@ -361,17 +360,34 @@ namespace AyaNova.Biz
|
|||||||
jo["CustomFields"] = JObject.Parse((string)jo["CustomFields"]);
|
jo["CustomFields"] = JObject.Parse((string)jo["CustomFields"]);
|
||||||
ReportData.Add(jo);
|
ReportData.Add(jo);
|
||||||
}
|
}
|
||||||
|
orderedList = null;
|
||||||
}
|
}
|
||||||
|
vc.Clear();
|
||||||
return ReportData;
|
return ReportData;
|
||||||
}
|
}
|
||||||
|
|
||||||
//populate viz fields from provided object
|
//populate viz fields from provided object
|
||||||
private async Task PopulateVizFields(Customer o)
|
private async Task PopulateVizFields(Customer o)
|
||||||
{
|
{
|
||||||
|
|
||||||
if (o.HeadOfficeId != null)
|
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)
|
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
|
//Too slow and complex for EF Core
|
||||||
using (var command = ct.Database.GetDbConnection().CreateCommand())
|
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
|
// IMPORT EXPORT
|
||||||
|
|||||||
@@ -822,12 +822,12 @@ namespace AyaNova.Biz
|
|||||||
|
|
||||||
var idList = dataListSelectedRequest.SelectedRowIds;
|
var idList = dataListSelectedRequest.SelectedRowIds;
|
||||||
JArray ReportData = new JArray();
|
JArray ReportData = new JArray();
|
||||||
|
List<PM> batchResults = new List<PM>();
|
||||||
while (idList.Any())
|
while (idList.Any())
|
||||||
{
|
{
|
||||||
var batch = idList.Take(IReportAbleObject.REPORT_DATA_BATCH_SIZE);
|
var batch = idList.Take(IReportAbleObject.REPORT_DATA_BATCH_SIZE);
|
||||||
idList = idList.Skip(IReportAbleObject.REPORT_DATA_BATCH_SIZE).ToArray();
|
idList = idList.Skip(IReportAbleObject.REPORT_DATA_BATCH_SIZE).ToArray();
|
||||||
List<PM> batchResults = new List<PM>();
|
batchResults.Clear();
|
||||||
foreach (long batchId in batch)
|
foreach (long batchId in batch)
|
||||||
batchResults.Add(await PMGetPartialAsync(dataListSelectedRequest.AType, batchId, dataListSelectedRequest.IncludeWoItemDescendants, true));
|
batchResults.Add(await PMGetPartialAsync(dataListSelectedRequest.AType, batchId, dataListSelectedRequest.IncludeWoItemDescendants, true));
|
||||||
|
|
||||||
|
|||||||
@@ -798,12 +798,12 @@ namespace AyaNova.Biz
|
|||||||
|
|
||||||
var idList = dataListSelectedRequest.SelectedRowIds;
|
var idList = dataListSelectedRequest.SelectedRowIds;
|
||||||
JArray ReportData = new JArray();
|
JArray ReportData = new JArray();
|
||||||
|
List<Quote> batchResults = new List<Quote>();
|
||||||
while (idList.Any())
|
while (idList.Any())
|
||||||
{
|
{
|
||||||
var batch = idList.Take(IReportAbleObject.REPORT_DATA_BATCH_SIZE);
|
var batch = idList.Take(IReportAbleObject.REPORT_DATA_BATCH_SIZE);
|
||||||
idList = idList.Skip(IReportAbleObject.REPORT_DATA_BATCH_SIZE).ToArray();
|
idList = idList.Skip(IReportAbleObject.REPORT_DATA_BATCH_SIZE).ToArray();
|
||||||
List<Quote> batchResults = new List<Quote>();
|
batchResults.Clear();
|
||||||
foreach (long batchId in batch)
|
foreach (long batchId in batch)
|
||||||
batchResults.Add(await QuoteGetPartialAsync(dataListSelectedRequest.AType, batchId, dataListSelectedRequest.IncludeWoItemDescendants, true));
|
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)
|
private async Task ItemPopulateVizFields(QuoteItem o, bool populateForReporting)
|
||||||
{
|
{
|
||||||
|
|
||||||
if (o.WorkOrderItemStatusId != null)
|
if (o.WorkOrderItemStatusId != null)
|
||||||
{
|
{
|
||||||
string value = vc.Get("woistatname", o.WorkOrderItemStatusId);
|
string value = vc.Get("woistatname", o.WorkOrderItemStatusId);
|
||||||
@@ -1958,7 +1958,7 @@ namespace AyaNova.Biz
|
|||||||
//
|
//
|
||||||
private async Task ExpensePopulateVizFields(QuoteItemExpense o, bool calculateTotalsOnly = false)
|
private async Task ExpensePopulateVizFields(QuoteItemExpense o, bool calculateTotalsOnly = false)
|
||||||
{
|
{
|
||||||
|
|
||||||
if (calculateTotalsOnly == false)
|
if (calculateTotalsOnly == false)
|
||||||
{
|
{
|
||||||
if (o.UserId != null)
|
if (o.UserId != null)
|
||||||
@@ -3156,7 +3156,7 @@ namespace AyaNova.Biz
|
|||||||
private async Task OutsideServicePopulateVizFields(QuoteItemOutsideService o, bool calculateTotalsOnly = false)
|
private async Task OutsideServicePopulateVizFields(QuoteItemOutsideService o, bool calculateTotalsOnly = false)
|
||||||
{
|
{
|
||||||
if (calculateTotalsOnly == false)
|
if (calculateTotalsOnly == false)
|
||||||
{
|
{
|
||||||
if (o.UnitId != 0)
|
if (o.UnitId != 0)
|
||||||
{
|
{
|
||||||
if (!vc.Has("unitserial", o.UnitId))
|
if (!vc.Has("unitserial", o.UnitId))
|
||||||
@@ -3933,7 +3933,7 @@ namespace AyaNova.Biz
|
|||||||
//
|
//
|
||||||
private async Task ScheduledUserPopulateVizFields(QuoteItemScheduledUser o)
|
private async Task ScheduledUserPopulateVizFields(QuoteItemScheduledUser o)
|
||||||
{
|
{
|
||||||
if (o.UserId != null)
|
if (o.UserId != null)
|
||||||
{
|
{
|
||||||
if (!vc.Has("user", o.UserId))
|
if (!vc.Has("user", o.UserId))
|
||||||
{
|
{
|
||||||
@@ -4502,7 +4502,7 @@ namespace AyaNova.Biz
|
|||||||
//
|
//
|
||||||
private async Task TravelPopulateVizFields(QuoteItemTravel o, bool calculateTotalsOnly = false)
|
private async Task TravelPopulateVizFields(QuoteItemTravel o, bool calculateTotalsOnly = false)
|
||||||
{
|
{
|
||||||
if (calculateTotalsOnly == false)
|
if (calculateTotalsOnly == false)
|
||||||
{
|
{
|
||||||
if (o.UserId != null)
|
if (o.UserId != null)
|
||||||
{
|
{
|
||||||
@@ -4903,7 +4903,7 @@ namespace AyaNova.Biz
|
|||||||
//
|
//
|
||||||
private async Task UnitPopulateVizFields(QuoteItemUnit o, bool populateForReporting)
|
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;
|
bool UnitHasModel = false;
|
||||||
if (!vc.Has("unitserial", o.UnitId))
|
if (!vc.Has("unitserial", o.UnitId))
|
||||||
{
|
{
|
||||||
@@ -4967,7 +4967,7 @@ namespace AyaNova.Biz
|
|||||||
}
|
}
|
||||||
o.UnitViz = vc.Get("unitserial", o.UnitId);
|
o.UnitViz = vc.Get("unitserial", o.UnitId);
|
||||||
o.UnitDescriptionViz = vc.Get("unitdesc", 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)
|
if (populateForReporting)
|
||||||
{
|
{
|
||||||
o.AddressViz = vc.Get("unitaddr", o.UnitId);
|
o.AddressViz = vc.Get("unitaddr", o.UnitId);
|
||||||
|
|||||||
@@ -949,13 +949,13 @@ namespace AyaNova.Biz
|
|||||||
|
|
||||||
var idList = dataListSelectedRequest.SelectedRowIds;
|
var idList = dataListSelectedRequest.SelectedRowIds;
|
||||||
JArray ReportData = new JArray();
|
JArray ReportData = new JArray();
|
||||||
|
List<WorkOrder> batchResults = new List<WorkOrder>();
|
||||||
while (idList.Any())
|
while (idList.Any())
|
||||||
{
|
{
|
||||||
if (!ReportRenderManager.KeepGoing(jobId)) return null;
|
if (!ReportRenderManager.KeepGoing(jobId)) return null;
|
||||||
var batch = idList.Take(IReportAbleObject.REPORT_DATA_BATCH_SIZE);
|
var batch = idList.Take(IReportAbleObject.REPORT_DATA_BATCH_SIZE);
|
||||||
idList = idList.Skip(IReportAbleObject.REPORT_DATA_BATCH_SIZE).ToArray();
|
idList = idList.Skip(IReportAbleObject.REPORT_DATA_BATCH_SIZE).ToArray();
|
||||||
List<WorkOrder> batchResults = new List<WorkOrder>();
|
batchResults.Clear();
|
||||||
foreach (long batchId in batch)
|
foreach (long batchId in batch)
|
||||||
{
|
{
|
||||||
if (!ReportRenderManager.KeepGoing(jobId)) return null;
|
if (!ReportRenderManager.KeepGoing(jobId)) return null;
|
||||||
@@ -986,9 +986,9 @@ namespace AyaNova.Biz
|
|||||||
}
|
}
|
||||||
ReportData.Add(jo);
|
ReportData.Add(jo);
|
||||||
}
|
}
|
||||||
batchResults.Clear();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
vc.Clear();
|
vc.Clear();
|
||||||
oc.Clear();
|
oc.Clear();
|
||||||
return ReportData;
|
return ReportData;
|
||||||
|
|||||||
Reference in New Issue
Block a user