diff --git a/server/AyaNova/biz/WorkOrderBiz.cs b/server/AyaNova/biz/WorkOrderBiz.cs index f4b7a60a..b5762477 100644 --- a/server/AyaNova/biz/WorkOrderBiz.cs +++ b/server/AyaNova/biz/WorkOrderBiz.cs @@ -115,7 +115,7 @@ namespace AyaNova.Biz { await WorkOrderBizActionsAsync(AyaEvent.Created, newObject, null, null); newObject.Tags = TagBiz.NormalizeTags(newObject.Tags); - newObject.CustomFields = JsonUtil.CompactJson(newObject.CustomFields); + newObject.CustomFields = JsonUtil.CompactJson(newObject.CustomFields); await ct.WorkOrder.AddAsync(newObject); await ct.SaveChangesAsync(); await EventLogProcessor.LogEventToDatabaseAsync(new Event(UserId, newObject.Id, BizType, AyaEvent.Created), ct); @@ -163,7 +163,7 @@ namespace AyaNova.Biz await transaction.CommitAsync(); if (populateViz) await WorkOrderPopulateVizFields(newObject, true, false); - + await WorkOrderHandlePotentialNotificationEvent(AyaEvent.Created, newObject); return newObject; } @@ -207,7 +207,7 @@ namespace AyaNova.Biz //////////////////////////////////////////////////////////////////////////////////////////////// // GET // - internal async Task WorkOrderGetAsync(long id, bool populateDisplayFields, bool logTheGetEvent = true, bool populateForReporting=false) + internal async Task WorkOrderGetAsync(long id, bool populateDisplayFields, bool logTheGetEvent = true, bool populateForReporting = false) { var ret = await WorkOrderGetFullAsync(id); @@ -414,14 +414,26 @@ namespace AyaNova.Biz if (ayaEvent != AyaEvent.Created && ayaEvent != AyaEvent.Modified) return; + + //CREATED OR MODIFIED + if(ayaEvent==AyaEvent.Created || ayaEvent==AyaEvent.Modified) + { + //Set duration to completed + //Clear it if set and not completed state + //or + //Set it if not set and completed state + + todo + } + + //CREATION ACTIONS if (ayaEvent == AyaEvent.Created) { await AutoSetContractAsync(newObj); if (newObj.CompleteByDate == null)//need to account for a user manually selecting a specific close by date in advance indicating to ignore any auto sets await AutoSetCloseByDateAsync(newObj); - await AutoSetAddressAsync(newObj); - return; + await AutoSetAddressAsync(newObj); } //MODIFIED ACTIONS @@ -6490,31 +6502,50 @@ namespace AyaNova.Biz //////////////////////////////////////////////////////////////////////////////////////////////// //GET CURRENT STATUS FOR WORKORDER FROM RELATIVE // + + //cache the state to save repeatedly fetching it for this operation which could be called multiple times in a flowv + internal WorkOrderStatus mCurrentWorkOrderStatus = null; + internal async Task GetCurrentWorkOrderStatusFromRelatedAsync(AyaType ayaType, long id) { - //instantiated method to save adding the context - return await GetCurrentWorkOrderStatusFromRelatedAsync(ayaType, id, ct); - } - internal static async Task GetCurrentWorkOrderStatusFromRelatedAsync(AyaType ayaType, long id, AyContext ct) - { - //static method - var wid = await GetWorkOrderIdFromRelativeAsync(ayaType, id, ct); - var stat = await ct.WorkOrderState.AsNoTracking() - .Where(z => z.WorkOrderId == wid.WorkOrderId) - .OrderByDescending(z => z.Created) - .Take(1) - .FirstOrDefaultAsync(); + if (mCurrentWorkOrderStatus == null) + { + var wid = await GetWorkOrderIdFromRelativeAsync(ayaType, id, ct); + var stat = await ct.WorkOrderState.AsNoTracking() + .Where(z => z.WorkOrderId == wid.WorkOrderId) + .OrderByDescending(z => z.Created) + .Take(1) + .FirstOrDefaultAsync(); - - //no state set yet? - if (stat == null) - { //default - return new WorkOrderStatus() { Id = -1, Locked = false, Completed = false }; + //no state set yet? + if (stat == null) + mCurrentWorkOrderStatus = new WorkOrderStatus() { Id = -1, Locked = false, Completed = false }; + else + mCurrentWorkOrderStatus = await ct.WorkOrderStatus.AsNoTracking().Where(z => z.Id == stat.WorkOrderStatusId).FirstAsync();//this should never not be null } - return await ct.WorkOrderStatus.AsNoTracking().Where(z => z.Id == stat.WorkOrderStatusId).FirstAsync();//this should never not be null - + return mCurrentWorkOrderStatus; } + // internal static async Task GetCurrentWorkOrderStatusFromRelatedAsync(AyaType ayaType, long id, AyContext ct) + // { + // //static method + // var wid = await GetWorkOrderIdFromRelativeAsync(ayaType, id, ct); + // var stat = await ct.WorkOrderState.AsNoTracking() + // .Where(z => z.WorkOrderId == wid.WorkOrderId) + // .OrderByDescending(z => z.Created) + // .Take(1) + // .FirstOrDefaultAsync(); + + + // //no state set yet? + // if (stat == null) + // { //default + // return new WorkOrderStatus() { Id = -1, Locked = false, Completed = false }; + // } + // return await ct.WorkOrderStatus.AsNoTracking().Where(z => z.Id == stat.WorkOrderStatusId).FirstAsync();//this should never not be null + + // } + #endregion utility