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); }
private async Task VaryWorkOrder(WorkOrder workOrder, Infrastructure.JobStatusUpdate variationJobStatus) { await _updateSorCodesUseCase.Execute(workOrder, variationJobStatus.MoreSpecificSORCode); workOrder.StatusCode = WorkStatusCode.VariationApproved; }