public async Task <IActionResult> OnGetAsync(string fundingPeriodId = null) { if (!string.IsNullOrWhiteSpace(fundingPeriodId)) { FundingPeriodId = fundingPeriodId; } await TaskHelper.WhenAllAndThrow(PopulateFundingPeriods(fundingPeriodId), PopulateFundingStreams()); IsAuthorizedToCreate = FundingStreams.Count() != 0; return(Page()); }
public async Task <IActionResult> OnPostAsync(string fundingPeriodId = null) { if (!ModelState.IsValid) { await TaskHelper.WhenAllAndThrow(PopulateFundingPeriods(fundingPeriodId), PopulateFundingStreams()); IsAuthorizedToCreate = FundingStreams.Count() != 0; return(Page()); } CreateSpecificationModel specification = _mapper.Map <CreateSpecificationModel>(CreateSpecificationViewModel); if (!await _authorizationHelper.DoesUserHavePermission(User, specification.FundingStreamIds, FundingStreamActionTypes.CanCreateSpecification)) { return(new ForbidResult()); } ValidatedApiResponse <Specification> result = await _specsClient.CreateSpecification(specification); if (result.StatusCode.IsSuccess()) { return(Redirect($"/specs/policies/{result.Content.Id}?operationType=SpecificationCreated&operationId={result.Content.Id}")); } else if (result.StatusCode == HttpStatusCode.BadRequest) { result.AddValidationResultErrors(ModelState); await TaskHelper.WhenAllAndThrow(PopulateFundingPeriods(fundingPeriodId), PopulateFundingStreams()); return(Page()); } else { return(new InternalServerErrorResult($"Unable to create specification - result '{result.StatusCode}'")); } }