diff --git a/server/AyaNova/Controllers/WorkOrderController.cs b/server/AyaNova/Controllers/WorkOrderController.cs
index 22ea8975..56859ecd 100644
--- a/server/AyaNova/Controllers/WorkOrderController.cs
+++ b/server/AyaNova/Controllers/WorkOrderController.cs
@@ -99,7 +99,7 @@ namespace AyaNova.Api.Controllers
}
///
- /// Get WorkOrder for customer
+ /// Get Customer view of WorkOrder
///
///
/// Customer WorkOrder
diff --git a/server/AyaNova/biz/LoanUnitBiz.cs b/server/AyaNova/biz/LoanUnitBiz.cs
index 400bf7c1..cffc1e17 100644
--- a/server/AyaNova/biz/LoanUnitBiz.cs
+++ b/server/AyaNova/biz/LoanUnitBiz.cs
@@ -277,6 +277,8 @@ namespace AyaNova.Biz
{
var idList = dataListSelectedRequest.SelectedRowIds;
JArray ReportData = new JArray();
+ //spin up a workorderbiz for loaner on wo reporting purposes
+ WorkOrderBiz workorderbiz = WorkOrderBiz.GetBiz(ct);
while (idList.Any())
{
var batch = idList.Take(IReportAbleObject.REPORT_DATA_BATCH_SIZE);
@@ -289,7 +291,7 @@ namespace AyaNova.Biz
foreach (LoanUnit w in orderedList)
{
if (!ReportRenderManager.KeepGoing(jobId)) return null;
- await PopulateVizFields(w);
+ await PopulateVizFields(w, workorderbiz);
var jo = JObject.FromObject(w);
if (!JsonUtil.JTokenIsNullOrEmpty(jo["CustomFields"]))
jo["CustomFields"] = JObject.Parse((string)jo["CustomFields"]);
@@ -298,23 +300,41 @@ namespace AyaNova.Biz
orderedList = null;
}
vc.Clear();
+ oc.Clear();
return ReportData;
}
-
+ private ObjectCache oc = new ObjectCache();
private VizCache vc = new VizCache();
//populate viz fields from provided object
- private async Task PopulateVizFields(LoanUnit o)
+ private async Task PopulateVizFields(LoanUnit o, WorkOrderBiz workorderbiz)
{
-
if (o.UnitId != null)
{
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);
}
-
+ if (o.WorkOrderItemLoanId != null)
+ {
+ if (!oc.Has("woil", o.WorkOrderItemLoanId))
+ {
+ //not been fetched yet so get it all here
+ var wo = await workorderbiz.WorkOrderGetPartialAsync(AyaType.WorkOrderItemLoan, (long)o.WorkOrderItemLoanId, false, true);
+ oc.Add(wo.Items[0].Loans[0], "woil", o.WorkOrderItemLoanId);
+ vc.Add(wo.Serial.ToString(), "woserial", o.WorkOrderItemLoanId);
+ vc.Add(wo.CustomerViz, "wocustomer", o.WorkOrderItemLoanId);
+ }
+ var woil = (WorkOrderItemLoan)oc.Get("woil", o.WorkOrderItemLoanId);
+ o.WorkOrderRateViz = woil.UnitOfMeasureViz;
+ o.WorkOrderQuantityViz = woil.Quantity;
+ o.WorkOrderOutDateViz = woil.OutDate;
+ o.WorkOrderDueDateViz = woil.DueDate;
+ o.WorkOrderReturnDateViz = woil.ReturnDate;
+ o.WorkOrderSerialViz = vc.Get("woserial", o.WorkOrderItemLoanId);
+ o.WorkOrderCustomerViz = vc.Get("wocustomer", o.WorkOrderItemLoanId);
+ }
}
diff --git a/server/AyaNova/biz/WorkOrderBiz.cs b/server/AyaNova/biz/WorkOrderBiz.cs
index 539f2b16..000f031b 100644
--- a/server/AyaNova/biz/WorkOrderBiz.cs
+++ b/server/AyaNova/biz/WorkOrderBiz.cs
@@ -650,7 +650,6 @@ namespace AyaNova.Biz
{
var wid = (await GetWorkOrderIdFromRelativeAsync(ayaType, id, ct)).ParentId;
return await ct.WorkOrder.AsNoTracking().Where(x => x.Id == wid).Select(x => x.Serial).FirstOrDefaultAsync();
-
}
@@ -3112,13 +3111,15 @@ namespace AyaNova.Biz
////////////////////////////////////////////////////////////////////////////////////////////////
// GET
//
- internal async Task LoanGetAsync(long id, bool logTheGetEvent = true)
+ internal async Task LoanGetAsync(long id, bool logTheGetEvent = true, bool populateViz=false)
{
if (UserIsSubContractorRestricted) //no access allowed at all
return null;
var ret = await ct.WorkOrderItemLoan.AsNoTracking().SingleOrDefaultAsync(z => z.Id == id);
if (logTheGetEvent && ret != null)
await EventLogProcessor.LogEventToDatabaseAsync(new Event(UserId, id, ret.AyaType, AyaEvent.Retrieved), ct);
+ if(populateViz)
+ await LoanPopulateVizFields(ret);
return ret;
}
diff --git a/server/AyaNova/models/LoanUnit.cs b/server/AyaNova/models/LoanUnit.cs
index d437b090..f91ddc36 100644
--- a/server/AyaNova/models/LoanUnit.cs
+++ b/server/AyaNova/models/LoanUnit.cs
@@ -28,8 +28,7 @@ namespace AyaNova.Models
//MIGRATE_OUTSTANDING this needs to be set in migrate v8 once workorderitemloan is coded and importable
public long? WorkOrderItemLoanId { get; set; }
- [NotMapped]
- public string WorkOrderItemLoanViz { get; set; }
+
[Required]
public decimal RateHour { get; set; }
@@ -64,7 +63,21 @@ namespace AyaNova.Models
[NotMapped]
public string UnitViz { get; set; }
-
+ [NotMapped]
+ public string WorkOrderCustomerViz { get; set; }
+ [NotMapped]
+ public string WorkOrderSerialViz { get; set; }
+ [NotMapped]
+ public string WorkOrderRateViz { get; set; }
+ [NotMapped]
+ public decimal WorkOrderQuantityViz { get; set; }
+ [NotMapped]
+ public DateTime? WorkOrderOutDateViz { get; set; }
+ [NotMapped]
+ public DateTime? WorkOrderDueDateViz { get; set; }
+ [NotMapped]
+ public DateTime? WorkOrderReturnDateViz { get; set; }
+
public LoanUnit()
{