This commit is contained in:
@@ -777,13 +777,11 @@ namespace AyaNova.Biz
|
|||||||
// (returns workorder consisting only of the path from child or grandchild up to header populated
|
// (returns workorder consisting only of the path from child or grandchild up to header populated
|
||||||
// with display data for reporting)
|
// with display data for reporting)
|
||||||
//
|
//
|
||||||
internal async Task<WorkOrder> WorkOrderGetPartialAsync(AyaType ayaType, long id)
|
internal async Task<WorkOrder> WorkOrderGetPartialAsync(AyaType ayaType, long id, bool includeWoItemDescendants)
|
||||||
{
|
{
|
||||||
//if it's the entire workorder just get, populate and return as normal
|
//if it's the entire workorder just get, populate and return as normal
|
||||||
if (ayaType == AyaType.WorkOrder)
|
if (ayaType == AyaType.WorkOrder)
|
||||||
{
|
|
||||||
return await WorkOrderGetAsync(id, true, false);
|
return await WorkOrderGetAsync(id, true, false);
|
||||||
}
|
|
||||||
|
|
||||||
var wid = await GetWorkOrderIdFromRelativeAsync(ayaType, id, ct);
|
var wid = await GetWorkOrderIdFromRelativeAsync(ayaType, id, ct);
|
||||||
|
|
||||||
@@ -795,53 +793,76 @@ namespace AyaNova.Biz
|
|||||||
|
|
||||||
//explicit load subitems as required...
|
//explicit load subitems as required...
|
||||||
|
|
||||||
//get the single workorder item required
|
|
||||||
var woitem = await ct.WorkOrderItem.AsNoTracking().SingleOrDefaultAsync(x => x.Id == wid.WorkOrderItemId);
|
|
||||||
|
|
||||||
switch (ayaType)
|
WorkOrderItem woitem = null;
|
||||||
|
|
||||||
|
//it's requesting a fully populated woitem so do that here
|
||||||
|
if (includeWoItemDescendants)
|
||||||
{
|
{
|
||||||
case AyaType.WorkOrderItemExpense:
|
|
||||||
woitem.Expenses.Add(await ct.WorkOrderItemExpense.AsNoTracking().Where(z => z.Id == id).SingleOrDefaultAsync());
|
woitem = await ct.WorkOrderItem.AsSplitQuery()
|
||||||
break;
|
.AsNoTracking()
|
||||||
case AyaType.WorkOrderItemLabor:
|
.Include(wi => wi.Expenses)
|
||||||
woitem.Labors.Add(await ct.WorkOrderItemLabor.AsNoTracking().Where(z => z.Id == id).SingleOrDefaultAsync());
|
.Include(wi => wi.Labors)
|
||||||
break;
|
.Include(wi => wi.Loans)
|
||||||
case AyaType.WorkOrderItemLoan:
|
.Include(wi => wi.Parts)
|
||||||
woitem.Loans.Add(await ct.WorkOrderItemLoan.AsNoTracking().Where(z => z.Id == id).SingleOrDefaultAsync());
|
.Include(wi => wi.PartRequests)
|
||||||
break;
|
.Include(wi => wi.ScheduledUsers)
|
||||||
case AyaType.WorkOrderItemPart:
|
.Include(wi => wi.Tasks)
|
||||||
woitem.Parts.Add(await ct.WorkOrderItemPart.AsNoTracking().Where(z => z.Id == id).SingleOrDefaultAsync());
|
.Include(wi => wi.Travels)
|
||||||
break;
|
.Include(wi => wi.Units)
|
||||||
case AyaType.WorkOrderItemPartRequest:
|
.Include(wi => wi.OutsideServices)
|
||||||
woitem.PartRequests.Add(await ct.WorkOrderItemPartRequest.AsNoTracking().Where(z => z.Id == id).SingleOrDefaultAsync());
|
.SingleOrDefaultAsync(z => z.Id == id);
|
||||||
break;
|
}
|
||||||
case AyaType.WorkOrderItemScheduledUser:
|
else
|
||||||
woitem.ScheduledUsers.Add(await ct.WorkOrderItemScheduledUser.AsNoTracking().Where(z => z.Id == id).SingleOrDefaultAsync());
|
{
|
||||||
break;
|
|
||||||
case AyaType.WorkOrderItemTask:
|
|
||||||
woitem.Tasks.Add(await ct.WorkOrderItemTask.AsNoTracking().Where(z => z.Id == id).SingleOrDefaultAsync());
|
|
||||||
break;
|
|
||||||
case AyaType.WorkOrderItemTravel:
|
|
||||||
woitem.Travels.Add(await ct.WorkOrderItemTravel.AsNoTracking().Where(z => z.Id == id).SingleOrDefaultAsync());
|
|
||||||
break;
|
|
||||||
case AyaType.WorkOrderItemOutsideService:
|
//get the single workorder item required
|
||||||
woitem.OutsideServices.Add(await ct.WorkOrderItemOutsideService.AsNoTracking().Where(z => z.Id == id).SingleOrDefaultAsync());
|
woitem = await ct.WorkOrderItem.AsNoTracking().SingleOrDefaultAsync(x => x.Id == wid.WorkOrderItemId);
|
||||||
break;
|
|
||||||
case AyaType.WorkOrderItemUnit:
|
switch (ayaType)
|
||||||
woitem.Units.Add(await ct.WorkOrderItemUnit.AsNoTracking().Where(z => z.Id == id).SingleOrDefaultAsync());
|
{
|
||||||
break;
|
case AyaType.WorkOrderItemExpense:
|
||||||
|
woitem.Expenses.Add(await ct.WorkOrderItemExpense.AsNoTracking().Where(z => z.Id == id).SingleOrDefaultAsync());
|
||||||
|
break;
|
||||||
|
case AyaType.WorkOrderItemLabor:
|
||||||
|
woitem.Labors.Add(await ct.WorkOrderItemLabor.AsNoTracking().Where(z => z.Id == id).SingleOrDefaultAsync());
|
||||||
|
break;
|
||||||
|
case AyaType.WorkOrderItemLoan:
|
||||||
|
woitem.Loans.Add(await ct.WorkOrderItemLoan.AsNoTracking().Where(z => z.Id == id).SingleOrDefaultAsync());
|
||||||
|
break;
|
||||||
|
case AyaType.WorkOrderItemPart:
|
||||||
|
woitem.Parts.Add(await ct.WorkOrderItemPart.AsNoTracking().Where(z => z.Id == id).SingleOrDefaultAsync());
|
||||||
|
break;
|
||||||
|
case AyaType.WorkOrderItemPartRequest:
|
||||||
|
woitem.PartRequests.Add(await ct.WorkOrderItemPartRequest.AsNoTracking().Where(z => z.Id == id).SingleOrDefaultAsync());
|
||||||
|
break;
|
||||||
|
case AyaType.WorkOrderItemScheduledUser:
|
||||||
|
woitem.ScheduledUsers.Add(await ct.WorkOrderItemScheduledUser.AsNoTracking().Where(z => z.Id == id).SingleOrDefaultAsync());
|
||||||
|
break;
|
||||||
|
case AyaType.WorkOrderItemTask:
|
||||||
|
woitem.Tasks.Add(await ct.WorkOrderItemTask.AsNoTracking().Where(z => z.Id == id).SingleOrDefaultAsync());
|
||||||
|
break;
|
||||||
|
case AyaType.WorkOrderItemTravel:
|
||||||
|
woitem.Travels.Add(await ct.WorkOrderItemTravel.AsNoTracking().Where(z => z.Id == id).SingleOrDefaultAsync());
|
||||||
|
break;
|
||||||
|
case AyaType.WorkOrderItemOutsideService:
|
||||||
|
woitem.OutsideServices.Add(await ct.WorkOrderItemOutsideService.AsNoTracking().Where(z => z.Id == id).SingleOrDefaultAsync());
|
||||||
|
break;
|
||||||
|
case AyaType.WorkOrderItemUnit:
|
||||||
|
woitem.Units.Add(await ct.WorkOrderItemUnit.AsNoTracking().Where(z => z.Id == id).SingleOrDefaultAsync());
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
ret.Items.Add(woitem);
|
ret.Items.Add(woitem);
|
||||||
|
|
||||||
// var goodPosts = context.Entry(blog)
|
|
||||||
// .Collection(b => b.Posts)
|
|
||||||
// .Query()
|
|
||||||
// .Where(p => p.Rating > 3)
|
|
||||||
// .ToList();
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
await WorkOrderPopulateVizFields(ret, false);
|
await WorkOrderPopulateVizFields(ret, false);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
@@ -865,10 +886,10 @@ namespace AyaNova.Biz
|
|||||||
idList = idList.Skip(IReportAbleObject.REPORT_DATA_BATCH_SIZE).ToArray();
|
idList = idList.Skip(IReportAbleObject.REPORT_DATA_BATCH_SIZE).ToArray();
|
||||||
List<WorkOrder> batchResults = new List<WorkOrder>();
|
List<WorkOrder> batchResults = new List<WorkOrder>();
|
||||||
foreach (long batchId in batch)
|
foreach (long batchId in batch)
|
||||||
batchResults.Add(await WorkOrderGetPartialAsync(dataListSelectedRequest.AType, batchId));
|
batchResults.Add(await WorkOrderGetPartialAsync(dataListSelectedRequest.AType, batchId, dataListSelectedRequest.IncludeWoItemDescendants));
|
||||||
|
|
||||||
//order the results back into original
|
//order the results back into original
|
||||||
IEnumerable<WorkOrder> orderedList=null;
|
IEnumerable<WorkOrder> orderedList = null;
|
||||||
switch (dataListSelectedRequest.AType)
|
switch (dataListSelectedRequest.AType)
|
||||||
{
|
{
|
||||||
case AyaType.WorkOrder:
|
case AyaType.WorkOrder:
|
||||||
|
|||||||
Reference in New Issue
Block a user