Ejemplo n.º 1
0
        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;
        }
Ejemplo n.º 4
0
 public MockWorkOrderCompletionGateway()
 {
     Setup(g => g.CreateWorkOrderCompletion(It.IsAny <WorkOrderComplete>()))
     .ReturnsAsync(1)
     .Callback <WorkOrderComplete>(woc => LastWorkOrderComplete = woc);
 }