From 76877e04231de8bb6606fb06c5d04f4d0e80221d Mon Sep 17 00:00:00 2001 From: John Cardinal Date: Fri, 15 May 2020 21:36:07 +0000 Subject: [PATCH] --- server/AyaNova/biz/WorkOrderBiz.cs | 60 ++++++++++++------------------ 1 file changed, 24 insertions(+), 36 deletions(-) diff --git a/server/AyaNova/biz/WorkOrderBiz.cs b/server/AyaNova/biz/WorkOrderBiz.cs index 9939848a..a9f650ca 100644 --- a/server/AyaNova/biz/WorkOrderBiz.cs +++ b/server/AyaNova/biz/WorkOrderBiz.cs @@ -253,73 +253,61 @@ namespace AyaNova.Biz //////////////////////////////////////////////////////////////////////////////////////////////// - // GET ANCESTOR + //GET ANCESTOR TYPE AND ID // internal static async Task GetAncestor(AyaType ayaType, long id, AyContext ct) { - long woid = 0; + long woitemid = 0; switch (ayaType) { case AyaType.WorkOrderItem: - woid = await ct.WorkOrderItem.Where(z => z.Id == id).Select(z => z.WorkOrderId).SingleAsync(); + woitemid = id; break; case AyaType.WorkOrderItemExpense: - woid = await ct.WorkOrderItem.Include(z => z.Expenses.Where(ex => ex.Id == id)).Select(z => z.WorkOrderId).SingleAsync(); + woitemid = await ct.WorkOrderItemExpense.Where(z => z.Id == id).Select(z => z.WorkOrderItemId).SingleOrDefaultAsync(); break; case AyaType.WorkOrderItemLabor: + woitemid = await ct.WorkOrderItemLabor.Where(z => z.Id == id).Select(z => z.WorkOrderItemId).SingleOrDefaultAsync(); + break; case AyaType.WorkOrderItemLoan: + woitemid = await ct.WorkOrderItemLoan.Where(z => z.Id == id).Select(z => z.WorkOrderItemId).SingleOrDefaultAsync(); + break; case AyaType.WorkOrderItemPart: + woitemid = await ct.WorkOrderItemPart.Where(z => z.Id == id).Select(z => z.WorkOrderItemId).SingleOrDefaultAsync(); + break; case AyaType.WorkOrderItemPartRequest: + woitemid = await ct.WorkOrderItemPartRequest.Where(z => z.Id == id).Select(z => z.WorkOrderItemId).SingleOrDefaultAsync(); + break; case AyaType.WorkOrderItemScheduledUser: + woitemid = await ct.WorkOrderItemScheduledUser.Where(z => z.Id == id).Select(z => z.WorkOrderItemId).SingleOrDefaultAsync(); + break; case AyaType.WorkOrderItemTask: + woitemid = await ct.WorkOrderItemTask.Where(z => z.Id == id).Select(z => z.WorkOrderItemId).SingleOrDefaultAsync(); + break; case AyaType.WorkOrderItemTravel: - + woitemid = await ct.WorkOrderItemTravel.Where(z => z.Id == id).Select(z => z.WorkOrderItemId).SingleOrDefaultAsync(); + break; default: throw new System.NotSupportedException($"WorkOrderBiz::GetAncestor -> AyaType {ayaType.ToString()} is not supported"); - } - - // //https://docs.microsoft.com/en-us/ef/core/querying/related-data - // //docs say this will not query twice but will recognize the duplicate woitem bit which is required for multiple grandchild collections - // var ret = - // await ct.WorkOrder - // .Include(w => w.Items) - // .ThenInclude(wi => wi.Expenses) - // .Include(w => w.Items) - // .ThenInclude(wi => wi.Labors) - // .Include(w => w.Items) - // .ThenInclude(wi => wi.Loans) - // .Include(w => w.Items) - // .ThenInclude(wi => wi.Parts) - // .Include(w => w.Items) - // .ThenInclude(wi => wi.PartRequests) - // .Include(w => w.Items) - // .ThenInclude(wi => wi.ScheduledUsers) - // .Include(w => w.Items) - // .ThenInclude(wi => wi.Tasks) - // .Include(w => w.Items) - // .ThenInclude(wi => wi.Travels) - // .Include(w => w.Items) - // .ThenInclude(wi => wi.Units) - // .SingleOrDefaultAsync(m => m.Id == id); - - - return new AyaTypeId(AyaType.WorkOrder, woid); + return new AyaTypeId(AyaType.WorkOrder, await ct.WorkOrderItem.Where(z => z.Id == woitemid).Select(z => z.WorkOrderId).SingleOrDefaultAsync()); } + + + //////////////////////////////////////////////////////////////////////////////////////////////// + //SEARCH + // private async Task WorkOrderSearchIndexAsync(WorkOrder obj, bool isNew) { - //SEARCH INDEXING var SearchParams = new Search.SearchIndexProcessObjectParameters(UserTranslationId, obj.Id, BizType); SearchParams.AddText(obj.Notes).AddText(obj.Serial).AddText(obj.Wiki).AddText(obj.Tags).AddCustomFields(obj.CustomFields); - if (isNew) await Search.ProcessNewObjectKeywordsAsync(SearchParams); else await Search.ProcessUpdatedObjectKeywordsAsync(SearchParams); } - //TODO: This is going to have to handle descendents or there needs to be a change to include a subitem or something in case of workorder public async Task GetSearchResultSummary(long id) { var obj = await ct.WorkOrder.SingleOrDefaultAsync(m => m.Id == id);