public async Task <IActionResult> WorkOrderComplete([FromBody] WorkOrderComplete request) { _diagnosticContext.SetWorkOrderId(int.Parse(request.WorkOrderReference.ID)); await _completeWorkOrderUseCase.Execute(request); return(Ok()); }
public async Task <int> CreateWorkOrderCompletion(WorkOrderComplete completion) { var user = _currentUserService.GetUser(); completion.JobStatusUpdates.ForEach(jsu => { jsu.AuthorName = user.Name(); jsu.AuthorEmail = user.Email(); }); _repairsContext.WorkOrderCompletes.Add(completion); await _repairsContext.SaveChangesAsync(); return(completion.Id); }
private async Task UpdateWorkOrderStatus(WorkOrder workOrder, WorkOrderComplete workOrderComplete) { if (workOrderComplete.JobStatusUpdates?.Count != 1) { throw new NotSupportedException("Work order complete must contain a single update"); } var update = workOrderComplete.JobStatusUpdates.Single(); workOrderComplete.ClosedTime ??= update.EventTime; switch (update.TypeCode) { case Generated.JobStatusUpdateTypeCode.Other_0: //Other await HandleCustomType(workOrder, update); workOrder.IsOvertime = update.IsOvertime ?? workOrder.IsOvertime; break; case Generated.JobStatusUpdateTypeCode.DeniedAccess_70: // Denied Access workOrder.VerifyCanComplete(); if (!CanUserComplete(workOrder)) { throw new UnauthorizedAccessException("Not Authorised to close jobs"); } var prefix = Resources.WorkOrderNoAccessPrefix; if (update.EventTime != null) { prefix += $"{update.EventTime:dd MMMM yyyy HH:mm} "; } update.PrefixComments(prefix); update.EventTime = DateTime.Now; await _repairsGateway.UpdateWorkOrderStatus(workOrder.Id, WorkStatusCode.NoAccess); workOrder.ClosedDate ??= workOrderComplete.ClosedTime; await _notifier.Notify(new WorkOrderNoAccess(workOrder)); break; default: throw new NotSupportedException(Resources.UnsupportedWorkOrderUpdate); } workOrder.ClosedDate = workOrderComplete.ClosedTime ?? update.EventTime; }
public MockWorkOrderCompletionGateway() { Setup(g => g.CreateWorkOrderCompletion(It.IsAny <WorkOrderComplete>())) .ReturnsAsync(1) .Callback <WorkOrderComplete>(woc => LastWorkOrderComplete = woc); }