public async Task <IActionResult> GetPreviousProfilesForSpecificationForProviderForFundingLine( string specificationId, string providerId, string fundingStreamId, string fundingLineCode) { Guard.ArgumentNotNull(fundingStreamId, nameof(fundingStreamId)); Guard.ArgumentNotNull(specificationId, nameof(specificationId)); Guard.ArgumentNotNull(providerId, nameof(providerId)); Guard.ArgumentNotNull(fundingLineCode, nameof(fundingLineCode)); ApiResponse <IEnumerable <FundingLineChange> > fundingLineApiResponse = await _publishingApiClient .GetPreviousProfilesForSpecificationForProviderForFundingLine( specificationId, providerId, fundingStreamId, fundingLineCode); IActionResult fundingLineErrorResult = fundingLineApiResponse.IsSuccessOrReturnFailureResult(nameof(PublishedProviderVersion)); if (fundingLineErrorResult != null) { return(fundingLineErrorResult); } ApiResponse <ProviderVersionSearchResult> providerResponse = await _providersApiClient.GetCurrentProviderForFundingStream(fundingStreamId, providerId); IActionResult providerErrorResult = providerResponse.IsSuccessOrReturnFailureResult(nameof(ProviderVersionSearchResult)); if (providerErrorResult != null) { return(providerErrorResult); } ApiResponse <SpecificationSummary> specificationResponse = await _specificationsApiClient.GetSpecificationSummaryById(specificationId); IActionResult specificationErrorResult = specificationResponse.IsSuccessOrReturnFailureResult(nameof(SpecificationSummary)); if (specificationErrorResult != null) { return(specificationErrorResult); } SpecificationSummary specification = specificationResponse.Content; return(Ok(new FundingLineChangesViewModel { ProviderName = providerResponse.Content.Name, SpecificationName = specification.Name, FundingPeriodName = specification.FundingPeriod.Name, FundingLineChanges = fundingLineApiResponse.Content })); }