diff --git a/server/AyaNova/biz/WorkOrderBiz.cs b/server/AyaNova/biz/WorkOrderBiz.cs index fc74e50b..942d9deb 100644 --- a/server/AyaNova/biz/WorkOrderBiz.cs +++ b/server/AyaNova/biz/WorkOrderBiz.cs @@ -443,22 +443,6 @@ namespace AyaNova.Biz if (newObj.ContractId != oldObj.ContractId) await AutoSetCloseByDateAsync(newObj); - - //Set duration to completed - //Note that it's not practical to set this in the Created path because the header is saved *before* the state from the client for new work orders - //by necessity so if a user creates and closes a work order in one go then duration will not be set (or at least it will remain at zero which is actually accurate) - //Clear it if set and not completed state - //or - //Set it if not set and completed state - WorkOrderStatus currentStatus = await GetCurrentWorkOrderStatusFromRelatedAsync(AyaType.WorkOrder, newObj.Id); - if (currentStatus.Completed && newObj.DurationToCompleted == TimeSpan.Zero) - { - newObj.DurationToCompleted = DateTime.UtcNow - newObj.CreatedDate; - } - else if (newObj.DurationToCompleted != TimeSpan.Zero && !currentStatus.Completed) - { - newObj.DurationToCompleted = TimeSpan.Zero; - } } } @@ -1585,9 +1569,21 @@ namespace AyaNova.Biz { await ct.WorkOrderState.AddAsync(newObject); var wo = await ct.WorkOrder.FirstOrDefaultAsync(x => x.Id == newObject.WorkOrderId); + var newStatusInfo = await ct.WorkOrderStatus.AsNoTracking().FirstOrDefaultAsync(x => x.Id == newObject.WorkOrderStatusId); + + //Set duration to completed in workorder header + //Clear it if set and not completed state + //or + //Set it if not set and completed state + if (newStatusInfo.Completed && wo.DurationToCompleted == TimeSpan.Zero) + wo.DurationToCompleted = DateTime.UtcNow - wo.CreatedDate; + else if (wo.DurationToCompleted != TimeSpan.Zero && !newStatusInfo.Completed) + wo.DurationToCompleted = TimeSpan.Zero; + wo.LastStatusId = newObject.WorkOrderStatusId; await ct.SaveChangesAsync(); + await EventLogProcessor.LogEventToDatabaseAsync(new Event(UserId, newObject.Id, AyaType.WorkOrderStatus, AyaEvent.Created), ct); await StateHandlePotentialNotificationEvent(AyaEvent.Created, newObject); return newObject;