public async Task <IActionResult> UpdateApprovalStatusForAllocationLine([FromRoute] string specificationId, [FromBody] PublishedAllocationLineResultStatusUpdateViewModel allocationLines) { Guard.ArgumentNotNull(allocationLines, nameof(allocationLines)); if (allocationLines.Status != AllocationLineStatusViewModel.Approved && allocationLines.Status != AllocationLineStatusViewModel.Published) { ModelState.AddModelError(nameof(allocationLines.Status), "The status provided is not a valid destination status"); } SpecificationActionTypes permissionRequired = allocationLines.Status == AllocationLineStatusViewModel.Approved ? SpecificationActionTypes.CanApproveFunding : SpecificationActionTypes.CanPublishFunding; if (!await _authorizationHelper.DoesUserHavePermission(User, specificationId, permissionRequired)) { return(new ForbidResult()); } if (!ModelState.IsValid) { return(BadRequest(ModelState)); } PublishedAllocationLineResultStatusUpdateModel updateModel = new PublishedAllocationLineResultStatusUpdateModel() { Status = _mapper.Map <AllocationLineStatus>(allocationLines.Status), }; Dictionary <string, PublishedAllocationLineResultStatusUpdateProviderModel> updateProviders = new Dictionary <string, PublishedAllocationLineResultStatusUpdateProviderModel>(); foreach (PublishedAllocationLineResultStatusUpdateProviderViewModel updateItem in allocationLines.Providers) { PublishedAllocationLineResultStatusUpdateProviderModel providerUpdateModel = null; if (!updateProviders.ContainsKey(updateItem.ProviderId)) { providerUpdateModel = new PublishedAllocationLineResultStatusUpdateProviderModel() { ProviderId = updateItem.ProviderId, }; updateProviders.Add(updateItem.ProviderId, providerUpdateModel); updateModel.AddProvider(providerUpdateModel); } else { providerUpdateModel = updateProviders[updateItem.ProviderId]; } providerUpdateModel.AddAllocationLine(updateItem.AllocationLineId); } await _resultsClient.UpdatePublishedAllocationLineStatus(specificationId, updateModel); return(Ok()); }
public async Task UpdatePublishedAllocationLineStatus(string specificationId, PublishedAllocationLineResultStatusUpdateModel updateModel) { Guard.IsNullOrWhiteSpace(specificationId, nameof(specificationId)); Guard.ArgumentNotNull(updateModel, nameof(updateModel)); await PostAsync($"update-published-allocationline-results-status?specificationId={specificationId}", updateModel); }
public async Task <ValidatedApiResponse <PublishedAllocationLineResultStatusUpdateResponseModel> > UpdatePublishedAllocationLineStatusByBatch(string specificationId, PublishedAllocationLineResultStatusUpdateModel updateModel) { Guard.IsNullOrWhiteSpace(specificationId, nameof(specificationId)); Guard.ArgumentNotNull(updateModel, nameof(updateModel)); return(await ValidatedPostAsync <PublishedAllocationLineResultStatusUpdateResponseModel, PublishedAllocationLineResultStatusUpdateModel>($"update-published-allocationline-results-status?specificationId={specificationId}", updateModel)); }
public async Task <ValidatedApiResponse <ConfirmPublishApprove> > GetProviderResultsForPublishOrApproval(string specificationId, PublishedAllocationLineResultStatusUpdateModel filterCriteria) { return(await ValidatedPostAsync <ConfirmPublishApprove, PublishedAllocationLineResultStatusUpdateModel>($"get-confirmation-details-for-approve-publish-provider-results?specificationId={specificationId}", filterCriteria)); }