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}'"));
            }
        }