コード例 #1
0
        public async Task Execute(Generated.WorkOrderComplete workOrderCompleteRequest)
        {
            var workOrderId = int.Parse(workOrderCompleteRequest.WorkOrderReference.ID);

            _logger.LogInformation($"Starting execution of CompleteWorkOrderUseCase for order {workOrderId}");

            if (await _workOrderCompletionGateway.IsWorkOrderCompleted(workOrderId))
            {
                throw new NotSupportedException(Resources.CannotCompleteWorkOrderTwice);
            }

            var workOrder = await _repairsGateway.GetWorkOrder(workOrderId, true);

            ValidateRequest(workOrderCompleteRequest);
            var workOrderComplete = workOrderCompleteRequest.ToDb(workOrder, null);

            await using var transaction = await _transactionManager.Start();
            await UpdateWorkOrderStatus(workOrder, workOrderComplete);

            await _workOrderCompletionGateway.CreateWorkOrderCompletion(workOrderComplete);

            await transaction.Commit();

            _logger.LogInformation($"Finished execution of CompleteWorkOrderUseCase for order {workOrderId}, publishing result");

            await _repairsSnsService.PublishUpdate(workOrder);
        }
コード例 #2
0
 private static void ValidateRequest(Generated.WorkOrderComplete request)
 {
     if (!(request.JobStatusUpdates is null))
     {
         if (request.JobStatusUpdates.Any(jsu => jsu.RelatedWorkElementReference != null && jsu.RelatedWorkElementReference.Count > 0))
         {
             throw new NotSupportedException("Related work element references not supported during job completion.");
         }
         if (request.JobStatusUpdates.Any(jsu => jsu.AdditionalWork != null))
         {
             throw new NotSupportedException("Additional work not supported during job completion.");
         }
     }
     if (request.FollowOnWorkOrderReference != null && request.FollowOnWorkOrderReference.Count > 0)
     {
         throw new NotSupportedException("Follow on work order reference not supported during job completion.");
     }
 }