private async Task <IActionResult> PopulateForm(Specification specification)
        {
            IsAuthorizedtoEdit =
                await _authorizationHelper.DoesUserHavePermission(User, specification,
                                                                  SpecificationActionTypes.CanEditSpecification);

            IActionResult populateResult = await PopulateAllocationLines(specification.Id);

            if (populateResult != null)
            {
                return(populateResult);
            }

            if (AllocationLines.IsNullOrEmpty())
            {
                return(new InternalServerErrorResult($"Failed to load allocation lines for specification id: {specification.Id}"));
            }

            PopulatePolicies(specification);

            PopulateCalculationTypes();

            ApiResponse <IEnumerable <CalculationCurrentVersion> > baselinesQuery = await _specsClient.GetBaselineCalculationsBySpecificationId(specification.Id);

            IActionResult baselinesError = baselinesQuery.IsSuccessOrReturnFailureResult("Calculation baselines");

            if (baselinesError != null)
            {
                return(baselinesError);
            }

            IEnumerable <string> hiddenAllocationLineIds;

            if (baselinesQuery.Content.AnyWithNullCheck())
            {
                hiddenAllocationLineIds = baselinesQuery.Content.Select(s => s.AllocationLine?.Id).Where(s => !string.IsNullOrWhiteSpace(s));
            }
            else
            {
                hiddenAllocationLineIds = Enumerable.Empty <string>();
            }

            HideAllocationLinesForBaselinesJson = JsonConvert.SerializeObject(hiddenAllocationLineIds);
            AvailableBaselineAllocationLineIds  = AllocationLines.Count() - hiddenAllocationLineIds.Count();

            return(Page());
        }
        private async Task <IActionResult> PopulateForm(Specification specification, string calculationId)
        {
            Specification = _mapper.Map <SpecificationViewModel>(specification);

            PopulateAllocationLines(specification);

            if (AllocationLines.IsNullOrEmpty())
            {
                return(new InternalServerErrorResult($"Failed to load allocation lines for specification id: {specification.Id}"));
            }

            PopulatePolicies(specification);

            PopulateCalculationTypes();

            ApiResponse <IEnumerable <CalculationCurrentVersion> > baselinesQuery = await _specsClient.GetBaselineCalculationsBySpecificationId(specification.Id);

            IActionResult baselinesError = baselinesQuery.IsSuccessOrReturnFailureResult("Calculation baselines");

            if (baselinesError != null)
            {
                return(baselinesError);
            }

            IEnumerable <string> hiddenAllocationLineIds;

            if (baselinesQuery.Content.AnyWithNullCheck())
            {
                hiddenAllocationLineIds = baselinesQuery.Content.Select(s => s.AllocationLine?.Id).Where(s => !string.IsNullOrWhiteSpace(s));
            }
            else
            {
                hiddenAllocationLineIds = Enumerable.Empty <string>();
            }

            HideAllocationLinesForBaselinesJson = JsonConvert.SerializeObject(hiddenAllocationLineIds);

            ExistingAllocationLineId           = JsonConvert.SerializeObject(specification.GetCalculationById(calculationId)?.AllocationLine?.Id);
            AvailableBaselineAllocationLineIds = AllocationLines.Count() - hiddenAllocationLineIds.Count();

            return(Page());
        }