From 0f2095d0cdeffaa537c5d0d1862e0cbd29f1e384 Mon Sep 17 00:00:00 2001 From: John Cardinal Date: Tue, 2 Mar 2021 00:53:36 +0000 Subject: [PATCH] --- server/AyaNova/biz/ProjectBiz.cs | 13 +++++++++---- server/AyaNova/biz/PurchaseOrderBiz.cs | 20 +++++++++++++------- server/AyaNova/models/Project.cs | 2 ++ 3 files changed, 24 insertions(+), 11 deletions(-) diff --git a/server/AyaNova/biz/ProjectBiz.cs b/server/AyaNova/biz/ProjectBiz.cs index ac3b3deb..0a8ffb49 100644 --- a/server/AyaNova/biz/ProjectBiz.cs +++ b/server/AyaNova/biz/ProjectBiz.cs @@ -281,6 +281,7 @@ namespace AyaNova.Biz var orderedList = from id in batch join z in batchResults on id equals z.Id select z; foreach (Project w in orderedList) { + await PopulateVizFields(w); var jo = JObject.FromObject(w); if (!JsonUtil.JTokenIsNullOrEmpty(jo["CustomFields"])) jo["CustomFields"] = JObject.Parse((string)jo["CustomFields"]); @@ -291,11 +292,18 @@ namespace AyaNova.Biz } + //populate viz fields from provided object + private async Task PopulateVizFields(Project o) + { + if (o.ProjectOverseerId != null) + o.ProjectOverseerViz = await ct.User.AsNoTracking().Where(x => x.Id == o.ProjectOverseerId).Select(x => x.Name).FirstOrDefaultAsync(); + } + + //////////////////////////////////////////////////////////////////////////////////////////////// // IMPORT EXPORT // - public async Task GetExportData(long[] idList) { //for now just re-use the report data code @@ -303,9 +311,6 @@ namespace AyaNova.Biz return await GetReportData(idList); } - - - public async Task> ImportData(JArray ja) { List ImportResult = new List(); diff --git a/server/AyaNova/biz/PurchaseOrderBiz.cs b/server/AyaNova/biz/PurchaseOrderBiz.cs index 0f34e9ee..7d79c0f3 100644 --- a/server/AyaNova/biz/PurchaseOrderBiz.cs +++ b/server/AyaNova/biz/PurchaseOrderBiz.cs @@ -147,23 +147,29 @@ namespace AyaNova.Biz po.HasVendorNumber = false; po.HasUnreceived = false; + if (po.DropShipToCustomerId != null) + po.DropShipToCustomerViz = await ct.Customer.AsNoTracking().Where(x => x.Id == po.DropShipToCustomerId).Select(x => x.Name).FirstOrDefaultAsync(); + po.VendorViz = await ct.Contract.AsNoTracking().Where(x => x.Id == po.VendorId).Select(x => x.Name).FirstOrDefaultAsync(); + if (po.ProjectId != null) + po.ProjectViz = await ct.Contract.AsNoTracking().Where(x => x.Id == po.ProjectId).Select(x => x.Name).FirstOrDefaultAsync(); + foreach (PurchaseOrderItem item in po.Items) { - item.PartViz = await ct.Part.AsNoTracking().Where(x => x.Id == item.PartId).Select(x => x.PartNumber).SingleAsync(); - item.WarehouseViz = await ct.PartWarehouse.AsNoTracking().Where(x => x.Id == item.PartWarehouseId).Select(x => x.Name).SingleAsync(); + item.PartViz = await ct.Part.AsNoTracking().Where(x => x.Id == item.PartId).Select(x => x.PartNumber).FirstOrDefaultAsync(); + item.WarehouseViz = await ct.PartWarehouse.AsNoTracking().Where(x => x.Id == item.PartWarehouseId).Select(x => x.Name).FirstOrDefaultAsync(); if (item.WorkorderItemPartRequestId != null) { po.HasPartRequest = true; item.WorkorderItemPartRequestViz = "todo:woidfromleafnode";//MIGRATE_OUTSTANDING routine to get wo id from the woitempartrequestid if (item.PartRequestedById != null) - item.PartRequestedByViz = await ct.User.AsNoTracking().Where(x => x.Id == item.PartRequestedById).Select(x => x.Name).SingleAsync(); + item.PartRequestedByViz = await ct.User.AsNoTracking().Where(x => x.Id == item.PartRequestedById).Select(x => x.Name).FirstOrDefaultAsync(); } TaxCode tax = null; if (item.PurchaseTaxCodeId != null) { - tax = await ct.TaxCode.AsNoTracking().Where(x => x.Id == item.PurchaseTaxCodeId).SingleAsync(); + tax = await ct.TaxCode.AsNoTracking().Where(x => x.Id == item.PurchaseTaxCodeId).FirstOrDefaultAsync(); item.PurchaseTaxCodeViz = tax.Name; po.HasTaxes = true; } @@ -675,11 +681,12 @@ namespace AyaNova.Biz //have a report mode get or I guess just do it all here (but then need for export as well, but then again this is the way it gets for export via getreportdata) //so perhaps we have a REPORT format of a biz object model and that format has display names mirroring all the fields //it's fetching it here anyway, might as well do the whole shebang? - var batchResults = await ct.PurchaseOrder.Include(x=>x.Items).AsNoTracking().Where(z => batch.Contains(z.Id)).ToArrayAsync(); + var batchResults = await ct.PurchaseOrder.Include(x => x.Items).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; foreach (PurchaseOrder w in orderedList) { + await SetDisplayFields(w); var jo = JObject.FromObject(w); if (!JsonUtil.JTokenIsNullOrEmpty(jo["CustomFields"])) jo["CustomFields"] = JObject.Parse((string)jo["CustomFields"]); @@ -690,11 +697,10 @@ namespace AyaNova.Biz } + //////////////////////////////////////////////////////////////////////////////////////////////// // IMPORT EXPORT // - - public async Task GetExportData(long[] idList) { //for now just re-use the report data code diff --git a/server/AyaNova/models/Project.cs b/server/AyaNova/models/Project.cs index b84a3be3..eadd6392 100644 --- a/server/AyaNova/models/Project.cs +++ b/server/AyaNova/models/Project.cs @@ -26,6 +26,8 @@ namespace AyaNova.Models public DateTime? DateStarted { get; set; } public DateTime? DateCompleted { get; set; } public long? ProjectOverseerId { get; set; } + [NotMapped] + public string ProjectOverseerViz { get; set; } public string AccountNumber { get; set; } public Project()