コード例 #1
0
        public async Task Execute(JobStatusUpdate jobStatusUpdate)
        {
            WorkOrder workOrder = jobStatusUpdate.RelatedWorkOrder;

            workOrder.VerifyCanVary();

            var workElement = jobStatusUpdate.MoreSpecificSORCode;

            await AddCodeCosts(workElement.RateScheduleItem, workOrder.AssignedToPrimary?.ContractorReference);

            // check the user has the require vary spend limit
            var authorised = await _authorizationService.AuthorizeAsync(_currentUserService.GetUser(), jobStatusUpdate, "VarySpendLimit");

            if (await _featureManager.IsEnabledAsync(FeatureFlags.SpendLimits) && !authorised.Succeeded)
            {
                workOrder.StatusCode     = WorkStatusCode.VariationPendingApproval;
                jobStatusUpdate.TypeCode = JobStatusUpdateTypeCode.ContractManagerApprovalNeeded_180;
                await _notifier.Notify(new HighCostVariationCreated(workOrder));
            }
            else
            {
                await _updateSorCodesUseCase.Execute(workOrder, workElement.DeepClone());
            }

            jobStatusUpdate.PrefixComments(Resources.VariationReason);
        }
コード例 #2
0
        private async Task VaryWorkOrder(WorkOrder workOrder, Infrastructure.JobStatusUpdate variationJobStatus)
        {
            await _updateSorCodesUseCase.Execute(workOrder, variationJobStatus.MoreSpecificSORCode);

            workOrder.StatusCode = WorkStatusCode.VariationApproved;
        }