diff --git a/server/AyaNova/biz/WorkOrderBiz.cs b/server/AyaNova/biz/WorkOrderBiz.cs index 98b5495d..7bd2b1be 100644 --- a/server/AyaNova/biz/WorkOrderBiz.cs +++ b/server/AyaNova/biz/WorkOrderBiz.cs @@ -162,7 +162,7 @@ namespace AyaNova.Biz } await transaction.CommitAsync(); if (populateViz) - await WorkOrderPopulateVizFields(newObject, true); + await WorkOrderPopulateVizFields(newObject, true, false); await WorkOrderHandlePotentialNotificationEvent(AyaEvent.Created, newObject); return newObject; @@ -282,7 +282,7 @@ namespace AyaNova.Biz } if (populateDisplayFields) - await WorkOrderPopulateVizFields(ret, false); + await WorkOrderPopulateVizFields(ret, false, false); if (logTheGetEvent && ret != null) await EventLogProcessor.LogEventToDatabaseAsync(new Event(UserId, id, BizType, AyaEvent.Retrieved), ct); @@ -344,7 +344,7 @@ namespace AyaNova.Biz await EventLogProcessor.LogEventToDatabaseAsync(new Event(UserId, dbObject.Id, BizType, AyaEvent.Modified), ct); await WorkOrderSearchIndexAsync(putObject, false); await TagBiz.ProcessUpdateTagsInRepositoryAsync(ct, putObject.Tags, dbObject.Tags); - await WorkOrderPopulateVizFields(putObject, true);//doing this here ahead of notification because notification may require the viz field lookup anyway and afaict no harm in it + await WorkOrderPopulateVizFields(putObject, true, false);//doing this here ahead of notification because notification may require the viz field lookup anyway and afaict no harm in it await WorkOrderHandlePotentialNotificationEvent(AyaEvent.Modified, putObject, dbObject); return putObject; } @@ -864,7 +864,7 @@ namespace AyaNova.Biz // (returns workorder consisting only of the path from child or grandchild up to header populated // with display data for reporting) // - internal async Task WorkOrderGetPartialAsync(AyaType ayaType, long id, bool includeWoItemDescendants) + internal async Task WorkOrderGetPartialAsync(AyaType ayaType, long id, bool includeWoItemDescendants, bool populateForReporting) { //if it's the entire workorder just get, populate and return as normal if (ayaType == AyaType.WorkOrder) @@ -904,12 +904,6 @@ namespace AyaNova.Biz else { - - - - - - //get the single workorder item required woitem = await ct.WorkOrderItem.AsNoTracking().SingleOrDefaultAsync(x => x.Id == wid.WorkOrderItemId); @@ -951,7 +945,7 @@ namespace AyaNova.Biz if (woitem != null) ret.Items.Add(woitem); - await WorkOrderPopulateVizFields(ret, false); + await WorkOrderPopulateVizFields(ret, false, populateForReporting); return ret; } @@ -973,7 +967,7 @@ namespace AyaNova.Biz idList = idList.Skip(IReportAbleObject.REPORT_DATA_BATCH_SIZE).ToArray(); List batchResults = new List(); foreach (long batchId in batch) - batchResults.Add(await WorkOrderGetPartialAsync(dataListSelectedRequest.AType, batchId, dataListSelectedRequest.IncludeWoItemDescendants)); + batchResults.Add(await WorkOrderGetPartialAsync(dataListSelectedRequest.AType, batchId, dataListSelectedRequest.IncludeWoItemDescendants, true)); #region unnecessary shit removed //This is unnecessary because the re-ordering bit is only needed when the records are fetched in batches directly from the sql server as they @@ -1064,7 +1058,7 @@ namespace AyaNova.Biz //////////////////////////////////////////////////////////////////////////////////////////////// //VIZ POPULATE // - private async Task WorkOrderPopulateVizFields(WorkOrder o, bool headerOnly) + private async Task WorkOrderPopulateVizFields(WorkOrder o, bool headerOnly, bool populateForReporting) { @@ -1081,7 +1075,7 @@ namespace AyaNova.Biz foreach (var v in o.States) await StatePopulateVizFields(v); foreach (var v in o.Items) - await ItemPopulateVizFields(v); + await ItemPopulateVizFields(v, populateForReporting); } //popup Alert notes @@ -1946,7 +1940,7 @@ namespace AyaNova.Biz await ItemSearchIndexAsync(newObject, true); await TagBiz.ProcessUpdateTagsInRepositoryAsync(ct, newObject.Tags, null); await ItemHandlePotentialNotificationEvent(AyaEvent.Created, newObject); - await ItemPopulateVizFields(newObject); + await ItemPopulateVizFields(newObject, false); return newObject; } } @@ -2036,7 +2030,7 @@ namespace AyaNova.Biz await ItemSearchIndexAsync(putObject, false); await TagBiz.ProcessUpdateTagsInRepositoryAsync(ct, putObject.Tags, dbObject.Tags); await ItemHandlePotentialNotificationEvent(AyaEvent.Modified, putObject, dbObject); - await ItemPopulateVizFields(putObject); + await ItemPopulateVizFields(putObject, false); return putObject; } @@ -2148,7 +2142,7 @@ namespace AyaNova.Biz //////////////////////////////////////////////////////////////////////////////////////////////// //VIZ POPULATE // - private async Task ItemPopulateVizFields(WorkOrderItem o) + private async Task ItemPopulateVizFields(WorkOrderItem o, bool populateForReporting) { // if (o.WorkOrderOverseerId != null) // o.WorkOrderOverseerViz = await ct.User.AsNoTracking().Where(x => x.Id == o.WorkOrderOverseerId).Select(x => x.Name).FirstOrDefaultAsync(); @@ -2172,7 +2166,7 @@ namespace AyaNova.Biz foreach (var v in o.Travels) await TravelPopulateVizFields(v); foreach (var v in o.Units) - await UnitPopulateVizFields(v); + await UnitPopulateVizFields(v, populateForReporting); } @@ -5971,7 +5965,7 @@ namespace AyaNova.Biz await UnitSearchIndexAsync(newObject, true); await TagBiz.ProcessUpdateTagsInRepositoryAsync(ct, newObject.Tags, null); await UnitHandlePotentialNotificationEvent(AyaEvent.Created, newObject); - await UnitPopulateVizFields(newObject); + await UnitPopulateVizFields(newObject, false); return newObject; } @@ -6030,9 +6024,9 @@ namespace AyaNova.Biz await UnitSearchIndexAsync(putObject, false); await TagBiz.ProcessUpdateTagsInRepositoryAsync(ct, putObject.Tags, dbObject.Tags); await UnitHandlePotentialNotificationEvent(AyaEvent.Modified, putObject, dbObject); - await UnitPopulateVizFields(putObject); + await UnitPopulateVizFields(putObject, false); + - return putObject; } @@ -6131,12 +6125,25 @@ namespace AyaNova.Biz //////////////////////////////////////////////////////////////////////////////////////////////// //VIZ POPULATE // - private async Task UnitPopulateVizFields(WorkOrderItemUnit o) + private async Task UnitPopulateVizFields(WorkOrderItemUnit o, bool populateForReporting) { - var unitInfo = await ct.Unit.AsNoTracking().Where(x => x.Id == o.UnitId).Select(x => new { x.Serial, x.Description, x.UnitModelId }).FirstOrDefaultAsync(); + var unitInfo = await ct.Unit.AsNoTracking() + .Where(x => x.Id == o.UnitId) + .Select(x => new { x.Serial, x.Description, x.UnitModelId, x.Address, x.City, x.Region, x.Country, x.Latitude, x.Longitude }) + .FirstOrDefaultAsync(); o.UnitViz = unitInfo.Serial; o.UnitDescriptionViz = unitInfo.Description; + if (populateForReporting) + { + o.AddressViz = unitInfo.Address; + o.CityViz = unitInfo.City; + o.RegionViz = unitInfo.Region; + o.CountryViz = unitInfo.Country; + o.LatitudeViz = unitInfo.Latitude; + o.LongitudeViz = unitInfo.Longitude; + } + if (unitInfo.UnitModelId != null) { var unitModelInfo = await ct.UnitModel.AsNoTracking().Where(x => x.Id == unitInfo.UnitModelId).Select(x => new { x.Name, x.VendorId, x.Number }).FirstOrDefaultAsync(); diff --git a/server/AyaNova/models/WorkOrderItemUnit.cs b/server/AyaNova/models/WorkOrderItemUnit.cs index 51b6c6ed..1c5d2ff0 100644 --- a/server/AyaNova/models/WorkOrderItemUnit.cs +++ b/server/AyaNova/models/WorkOrderItemUnit.cs @@ -34,7 +34,19 @@ namespace AyaNova.Models [NotMapped] public string UnitDescriptionViz { get; set; } - + //PHYSICAL ADDRESS + [NotMapped] + public string AddressViz { get; set; } + [NotMapped] + public string CityViz { get; set; } + [NotMapped] + public string RegionViz { get; set; } + [NotMapped] + public string CountryViz { get; set; } + [NotMapped] + public decimal? LatitudeViz { get; set; } + [NotMapped] + public decimal? LongitudeViz { get; set; } //workaround for notification [NotMapped, JsonIgnore]