This commit is contained in:
2021-12-29 23:10:00 +00:00
parent e3a0404022
commit 1645b7d667
13 changed files with 129 additions and 56 deletions

View File

@@ -515,7 +515,7 @@ MULTIPLE discount / markup ITEMS
vc.Clear();
return ReportData;
}
//request cache for viz fields
private VizCache vc = new VizCache();

View File

@@ -364,7 +364,9 @@ namespace AyaNova.Biz
}
vc.Clear();
return ReportData;
}
}
private VizCache vc = new VizCache();
//populate viz fields from provided object
private async Task PopulateVizFields(Customer o)
@@ -412,9 +414,7 @@ namespace AyaNova.Biz
}
}
//request cache for viz fields
private VizCache vc = new VizCache();
////////////////////////////////////////////////////////////////////////////////////////////////
// IMPORT EXPORT

View File

@@ -219,7 +219,7 @@ namespace AyaNova.Biz
o.UserViz = vc.Get("user", o.UserId);
}
//request cache for viz fields
private VizCache vc = new VizCache();

View File

@@ -318,7 +318,7 @@ namespace AyaNova.Biz
vc.Clear();
return ReportData;
}
//request cache for viz fields
private VizCache vc = new VizCache();
//populate viz fields from provided object

View File

@@ -313,7 +313,7 @@ namespace AyaNova.Biz
vc.Clear();
return ReportData;
}
//request cache for viz fields
private VizCache vc = new VizCache();
//populate viz fields from provided object

View File

@@ -161,7 +161,7 @@ namespace AyaNova.Biz
ValidateCanDelete(dbObject);
if (HasErrors)
return false;
{
{
var IDList = await ct.Review.AsNoTracking().Where(x => x.AType == AyaType.LoanUnit && x.ObjectId == id).Select(x => x.Id).ToListAsync();
if (IDList.Count() > 0)
{
@@ -217,7 +217,7 @@ namespace AyaNova.Biz
.AddText(obj.Name)
.AddText(obj.Wiki)
.AddText(obj.Tags)
.AddText(obj.Serial)
.AddText(obj.Serial)
.AddCustomFields(obj.CustomFields);
}
@@ -285,6 +285,7 @@ namespace AyaNova.Biz
var batchResults = await ct.LoanUnit.AsNoTracking().Where(z => batch.Contains(z.Id)).ToArrayAsync();
//order the results back into original
var orderedList = from id in batch join z in batchResults on id equals z.Id select z;
batchResults = null;
foreach (LoanUnit w in orderedList)
{
if (!ReportRenderManager.KeepGoing(jobId)) return null;
@@ -294,15 +295,26 @@ namespace AyaNova.Biz
jo["CustomFields"] = JObject.Parse((string)jo["CustomFields"]);
ReportData.Add(jo);
}
orderedList = null;
}
vc.Clear();
return ReportData;
}
private VizCache vc = new VizCache();
//populate viz fields from provided object
private async Task PopulateVizFields(LoanUnit o)
{
if (o.UnitId != null)
o.UnitViz = await ct.Unit.AsNoTracking().Where(x => x.Id == o.UnitId).Select(x => x.Serial).FirstOrDefaultAsync();
{
if (!vc.Has("unitserial", o.UnitId))
vc.Add(await ct.Unit.AsNoTracking().Where(x => x.Id == o.UnitId).Select(x => x.Serial).FirstOrDefaultAsync(), "unitserial", o.UnitId);
o.UnitViz = vc.Get("unitserial", o.UnitId);
}
}
@@ -440,7 +452,7 @@ namespace AyaNova.Biz
public async Task HandlePotentialNotificationEvent(AyaEvent ayaEvent, ICoreBizObjectModel proposedObj, ICoreBizObjectModel currentObj = null)
{
ILogger log = AyaNova.Util.ApplicationLogging.CreateLogger<LoanUnitBiz>();
if(ServerBootConfig.SEEDING || ServerBootConfig.MIGRATING) return;
if (ServerBootConfig.SEEDING || ServerBootConfig.MIGRATING) return;
log.LogDebug($"HandlePotentialNotificationEvent processing: [AyaType:{this.BizType}, AyaEvent:{ayaEvent}]");
bool isNew = currentObj == null;

View File

@@ -147,7 +147,7 @@ namespace AyaNova.Biz
ValidateCanDelete(dbObject);
if (HasErrors)
return false;
{
{
var IDList = await ct.Review.AsNoTracking().Where(x => x.AType == AyaType.Memo && x.ObjectId == id).Select(x => x.Id).ToListAsync();
if (IDList.Count() > 0)
{
@@ -215,7 +215,7 @@ namespace AyaNova.Biz
{
//skip validation if seeding
if(ServerBootConfig.SEEDING ) return;
if (ServerBootConfig.SEEDING) return;
//Only can send a memo from your own account
//with bypass for import if superuser
@@ -290,6 +290,7 @@ namespace AyaNova.Biz
var batchResults = await ct.Memo.AsNoTracking().Where(z => batch.Contains(z.Id)).ToArrayAsync();
//order the results back into original
var orderedList = from id in batch join z in batchResults on id equals z.Id select z;
batchResults=null;
foreach (Memo w in orderedList)
{
if (!ReportRenderManager.KeepGoing(jobId)) return null;
@@ -299,18 +300,29 @@ namespace AyaNova.Biz
jo["CustomFields"] = JObject.Parse((string)jo["CustomFields"]);
ReportData.Add(jo);
}
orderedList=null;
}
vc.Clear();
return ReportData;
}
}
private VizCache vc = new VizCache();
//populate viz fields from provided object
private async Task PopulateVizFields(Memo o)
{
if (o.ToId != null)
o.ToViz = await ct.User.AsNoTracking().Where(x => x.Id == o.ToId).Select(x => x.Name).FirstOrDefaultAsync();
{
if (!vc.Has("user", o.ToId))
vc.Add(await ct.User.AsNoTracking().Where(x => x.Id == o.ToId).Select(x => x.Name).FirstOrDefaultAsync(), "user", o.ToId);
o.ToViz = vc.Get("user", o.ToId);
}
if (o.FromId != null)
o.FromViz = await ct.User.AsNoTracking().Where(x => x.Id == o.FromId).Select(x => x.Name).FirstOrDefaultAsync();
{
if (!vc.Has("user", o.FromId))
vc.Add(await ct.User.AsNoTracking().Where(x => x.Id == o.FromId).Select(x => x.Name).FirstOrDefaultAsync(), "user", o.FromId);
o.FromViz = vc.Get("user", o.FromId);
}
}
////////////////////////////////////////////////////////////////////////////////////////////////
@@ -448,7 +460,7 @@ namespace AyaNova.Biz
public async Task HandlePotentialNotificationEvent(AyaEvent ayaEvent, ICoreBizObjectModel proposedObj, ICoreBizObjectModel currentObj = null)
{
ILogger log = AyaNova.Util.ApplicationLogging.CreateLogger<MemoBiz>();
if(ServerBootConfig.SEEDING || ServerBootConfig.MIGRATING) return;
if (ServerBootConfig.SEEDING || ServerBootConfig.MIGRATING) return;
log.LogDebug($"HandlePotentialNotificationEvent processing: [AyaType:{this.BizType}, AyaEvent:{ayaEvent}]");
bool isNew = currentObj == null;

View File

@@ -58,7 +58,7 @@ namespace AyaNova.Biz
AuthorizationRoles.BizAdmin,
UserType.NotService);//picked not service arbitrarily, probably a non-factor
}
//request cache for viz fields
private VizCache vc = new VizCache();
private ObjectCache oc = new ObjectCache();

View File

@@ -113,7 +113,7 @@ namespace AyaNova.Biz
{
var partIdList = ret.Items.Select(z => z.PartId).ToArray();
var PickList = PickListFactory.GetAyaPickList(AyaType.Part);
var partNames = await PickListFetcher.GetResponseAsync(PickList, null, null, true, partIdList, null, ct, null,string.Empty);
var partNames = await PickListFetcher.GetResponseAsync(PickList, null, null, true, partIdList, null, ct, null, string.Empty);
foreach (PartAssemblyItem pai in ret.Items)
{
pai.PartNameViz = partNames.Where(z => z.Id == pai.PartId).First().Name;
@@ -184,7 +184,7 @@ namespace AyaNova.Biz
ValidateCanDelete(dbObject);
if (HasErrors)
return false;
{
{
var IDList = await ct.Review.AsNoTracking().Where(x => x.AType == AyaType.PartAssembly && x.ObjectId == id).Select(x => x.Id).ToListAsync();
if (IDList.Count() > 0)
{
@@ -338,6 +338,7 @@ namespace AyaNova.Biz
var batchResults = await ct.PartAssembly.AsNoTracking().Include(z => z.Items).Where(z => batch.Contains(z.Id)).ToArrayAsync();
//order the results back into original
var orderedList = from id in batch join z in batchResults on id equals z.Id select z;
batchResults = null;
foreach (PartAssembly w in orderedList)
{
if (!ReportRenderManager.KeepGoing(jobId)) return null;
@@ -347,15 +348,23 @@ namespace AyaNova.Biz
jo["CustomFields"] = JObject.Parse((string)jo["CustomFields"]);
ReportData.Add(jo);
}
orderedList = null;
}
vc.Clear();
return ReportData;
}
private VizCache vc = new VizCache();
//populate viz fields from provided object
private async Task PopulateVizFields(PartAssembly pa)
{
foreach (PartAssemblyItem o in pa.Items)
o.PartNameViz = await ct.Part.AsNoTracking().Where(x => x.Id == o.PartId).Select(x => x.Name).FirstOrDefaultAsync();
{
if (!vc.Has("part", o.PartId))
vc.Add(await ct.Part.AsNoTracking().Where(x => x.Id == o.PartId).Select(x => x.Name).FirstOrDefaultAsync(), "part", o.PartId);
o.PartNameViz = vc.Get("part", o.PartId);
}
}
@@ -492,7 +501,7 @@ namespace AyaNova.Biz
public async Task HandlePotentialNotificationEvent(AyaEvent ayaEvent, ICoreBizObjectModel proposedObj, ICoreBizObjectModel currentObj = null)
{
ILogger log = AyaNova.Util.ApplicationLogging.CreateLogger<PartAssemblyBiz>();
if(ServerBootConfig.SEEDING || ServerBootConfig.MIGRATING) return;
if (ServerBootConfig.SEEDING || ServerBootConfig.MIGRATING) return;
log.LogDebug($"HandlePotentialNotificationEvent processing: [AyaType:{this.BizType}, AyaEvent:{ayaEvent}]");
bool isNew = currentObj == null;

View File

@@ -161,7 +161,7 @@ namespace AyaNova.Biz
await ValidateCanDeleteAsync(dbObject);
if (HasErrors)
return false;
{
{
var IDList = await ct.Review.AsNoTracking().Where(x => x.AType == AyaType.Part && x.ObjectId == id).Select(x => x.Id).ToListAsync();
if (IDList.Count() > 0)
{
@@ -512,6 +512,7 @@ namespace AyaNova.Biz
var batchResults = await ct.Part.AsNoTracking().Where(z => batch.Contains(z.Id)).ToArrayAsync();
//order the results back into original
var orderedList = from id in batch join z in batchResults on id equals z.Id select z;
batchResults = null;
foreach (Part w in orderedList)
{
if (!ReportRenderManager.KeepGoing(jobId)) return null;
@@ -521,21 +522,37 @@ namespace AyaNova.Biz
jo["CustomFields"] = JObject.Parse((string)jo["CustomFields"]);
ReportData.Add(jo);
}
orderedList = null;
}
vc.Clear();
return ReportData;
}
private VizCache vc = new VizCache();
//populate viz fields from provided object
private async Task PopulateVizFields(Part o)
{
if (o.WholeSalerId != null)
o.WholeSalerViz = await ct.Vendor.AsNoTracking().Where(x => x.Id == o.WholeSalerId).Select(x => x.Name).FirstOrDefaultAsync();
if (o.ManufacturerId != null)
o.ManufacturerViz = await ct.Vendor.AsNoTracking().Where(x => x.Id == o.ManufacturerId).Select(x => x.Name).FirstOrDefaultAsync();
if (o.AlternativeWholeSalerId != null)
o.AlternativeWholeSalerViz = await ct.Vendor.AsNoTracking().Where(x => x.Id == o.AlternativeWholeSalerId).Select(x => x.Name).FirstOrDefaultAsync();
{
if (!vc.Has("vendorname", o.WholeSalerId))
vc.Add(await ct.Vendor.AsNoTracking().Where(x => x.Id == o.WholeSalerId).Select(x => x.Name).FirstOrDefaultAsync(), "vendorname", o.WholeSalerId);
o.WholeSalerViz = vc.Get("vendorname", o.WholeSalerId);
}
if (o.ManufacturerId != null)
{
if (!vc.Has("vendorname", o.ManufacturerId))
vc.Add(await ct.Vendor.AsNoTracking().Where(x => x.Id == o.ManufacturerId).Select(x => x.Name).FirstOrDefaultAsync(), "vendorname", o.ManufacturerId);
o.ManufacturerViz = vc.Get("vendorname", o.ManufacturerId);
}
if (o.AlternativeWholeSalerId != null)
{
if (!vc.Has("vendorname", o.AlternativeWholeSalerId))
vc.Add(await ct.Vendor.AsNoTracking().Where(x => x.Id == o.AlternativeWholeSalerId).Select(x => x.Name).FirstOrDefaultAsync(), "vendorname", o.AlternativeWholeSalerId);
o.AlternativeWholeSalerViz = vc.Get("vendorname", o.AlternativeWholeSalerId);
}
//if there turns out to be a situation where there are just too many serials slowing down the reporting always
//can look at tying this to the report data list column selection to check if serials are selected to display or not
o.PartSerialsViz = string.Join(", ", (await ct.PartSerial.Where(z => z.PartId == o.Id).OrderBy(z => z.Serial).Select(z => z.Serial).ToListAsync()));

View File

@@ -259,53 +259,76 @@ namespace AyaNova.Biz
{
var idList = dataListSelectedRequest.SelectedRowIds;
JArray ReportData = new JArray();
while (idList.Any())
using (var command = ct.Database.GetDbConnection().CreateCommand())
{
var batch = idList.Take(IReportAbleObject.REPORT_DATA_BATCH_SIZE);
idList = idList.Skip(IReportAbleObject.REPORT_DATA_BATCH_SIZE).ToArray();
//query for this batch, comes back in db natural order unfortunately
var batchResults = await ct.PartInventory.AsNoTracking().Where(z => batch.Contains(z.Id)).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 frequent viz data
var AyaTypesEnumList = await AyaNova.Api.Controllers.EnumListController.GetEnumList(
StringUtil.TrimTypeName(typeof(AyaType).ToString()),
UserTranslationId,
CurrentUserRoles);
using (var command = ct.Database.GetDbConnection().CreateCommand())
ct.Database.OpenConnection();
while (idList.Any())
{
ct.Database.OpenConnection();
var batch = idList.Take(IReportAbleObject.REPORT_DATA_BATCH_SIZE);
idList = idList.Skip(IReportAbleObject.REPORT_DATA_BATCH_SIZE).ToArray();
//query for this batch, comes back in db natural order unfortunately
var batchResults = await ct.PartInventory.AsNoTracking().Where(z => batch.Contains(z.Id)).ToArrayAsync();
//order the results back into original
var orderedList = from id in batch join z in batchResults on id equals z.Id select z;
batchResults = null;
foreach (PartInventory w in orderedList)
{
if (!ReportRenderManager.KeepGoing(jobId)) return null;
await PopulateVizFields(w, AyaTypesEnumList, command);
await PopulateVizFields(w, command);
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;
}
private VizCache vc = new VizCache();
//populate viz fields from provided object
private async Task PopulateVizFields(PartInventory o, List<NameIdItem> ayaTypesEnumList, System.Data.Common.DbCommand cmd)
private async Task PopulateVizFields(PartInventory o, System.Data.Common.DbCommand cmd)
{
var partInfo = await ct.Part.AsNoTracking().Where(x => x.Id == o.PartId).Select(x => new { PartDescriptionViz = x.Description, partNameViz = x.Name, partUPCViz = x.UPC }).FirstOrDefaultAsync();
o.PartDescriptionViz = partInfo.PartDescriptionViz;
o.PartNameViz = partInfo.partNameViz;
o.PartUpcViz = partInfo.partUPCViz;
if (ayaTypesEnumList == null)
ayaTypesEnumList = await AyaNova.Api.Controllers.EnumListController.GetEnumList(
StringUtil.TrimTypeName(typeof(AyaType).ToString()),
UserTranslationId,
CurrentUserRoles);
if (!vc.Has("partname", o.PartId))
{
var partInfo = await ct.Part.AsNoTracking().Where(x => x.Id == o.PartId).Select(x => new { x.Description, x.Name, x.UPC }).FirstOrDefaultAsync();
vc.Add(partInfo.Name, "partname", o.PartId);
vc.Add(partInfo.Description, "partdescription", o.PartId);
vc.Add(partInfo.UPC, "partupc", o.PartId);
}
o.PartDescriptionViz = vc.Get("partdescription", o.PartId);
o.PartNameViz = vc.Get("partname", o.PartId);
o.PartUpcViz = vc.Get("partupc", o.PartId);
if (o.PartWarehouseId != 0)
{
if (!vc.Has("partwarehouse", o.PartWarehouseId))
vc.Add(await ct.PartWarehouse.AsNoTracking().Where(x => x.Id == o.PartWarehouseId).Select(x => x.Name).FirstOrDefaultAsync(), "partwarehouse", o.PartWarehouseId);
o.PartWarehouseViz = vc.Get("partwarehouse", o.PartWarehouseId);
}
o.PartWarehouseViz = await ct.PartWarehouse.AsNoTracking().Where(x => x.Id == o.PartWarehouseId).Select(x => x.Name).FirstOrDefaultAsync();
if (o.SourceType != null)
o.SourceTypeViz = ayaTypesEnumList.Where(x => x.Id == (long)o.SourceType).Select(x => x.Name).First();
if (o.SourceType != null && o.SourceId != null)
o.SourceViz = BizObjectNameFetcherDirect.Name((AyaType)o.SourceType, (long)o.SourceId, UserTranslationId, cmd);
if (o.SourceType != null && o.SourceId != null)
{
if (!vc.Has($"b{o.SourceType}{o.SourceId}"))
vc.Add(BizObjectNameFetcherDirect.Name((AyaType)o.SourceType, (long)o.SourceId, UserTranslationId, cmd), $"b{o.SourceType}{o.SourceId}");
o.SourceViz = vc.Get($"b{o.SourceType}{o.SourceId}");
}
}
private List<NameIdItem> ayaTypesEnumList = null;
////////////////////////////////////////////////////////////////////////////////////////////////
// IMPORT EXPORT

View File

@@ -61,7 +61,7 @@ namespace AyaNova.Biz
}
//request cache for viz fields
private VizCache vc = new VizCache();
private ObjectCache oc = new ObjectCache();

View File

@@ -61,7 +61,7 @@ namespace AyaNova.Biz
UserType.Service);
}
//request cache for viz fields
private VizCache vc = new VizCache();
private ObjectCache oc = new ObjectCache();