private static LearningProviderRates Map(
            LocalDomainModels.SchoolInformation schoolInformation)
        {
            LearningProviderRates toReturn = null;

            BaselineFunding baselineFunding =
                Map(schoolInformation.BaselineFunding);
            NotionalFunding notionalFunding =
                Map(schoolInformation.NotionalFunding);

            IllustrativeFunding illustrativeFunding = null;

            if (schoolInformation.IllustrativeFunding != null)
            {
                illustrativeFunding =
                    Map(schoolInformation.IllustrativeFunding);
            }

            toReturn = new LearningProviderRates()
            {
                BaselineFunding     = baselineFunding,
                IllustrativeFunding = illustrativeFunding,
                NotionalFunding     = notionalFunding,
            };

            return(toReturn);
        }
        private async Task <IActionResult> ExecuteValidatedRequestAsync(
            int year,
            long urn,
            string fields,
            CancellationToken cancellationToken)
        {
            IActionResult toReturn = null;

            try
            {
                LearningProviderRates learningProviderRates =
                    await this.learningProviderRatesManager.GetLearningProviderRatesAsync(
                        year,
                        urn,
                        fields,
                        cancellationToken)
                    .ConfigureAwait(false);

                learningProviderRates.Name =
                    $"Learning Provider Rates for year {year} " +
                    $"({nameof(urn)}: {urn})";

                JsonSerializerSettings jsonSerializerSettings =
                    JsonConvert.DefaultSettings();

                if (jsonSerializerSettings == null)
                {
                    toReturn = new JsonResult(learningProviderRates);
                }
                else
                {
                    toReturn = new JsonResult(
                        learningProviderRates,
                        jsonSerializerSettings);
                }
            }
            catch (RatesNotFoundException)
            {
                toReturn =
                    this.httpErrorBodyResultProvider.GetHttpErrorBodyResult(
                        HttpStatusCode.NotFound,
                        3,
                        year.ToString(CultureInfo.InvariantCulture),
                        urn.ToString(CultureInfo.InvariantCulture));
            }

            return(toReturn);
        }
        /// <inheritdoc />
        public async Task <LearningProviderRates> GetLearningProviderRatesAsync(
            int year,
            long urn,
            string fields,
            CancellationToken cancellationToken)
        {
            LearningProviderRates toReturn = null;

            LocalDomainModels.SchoolInformation schoolInformation =
                await this.schoolInformationStorageAdapter.GetSchoolInformationAsync(
                    year,
                    urn,
                    cancellationToken)
                .ConfigureAwait(false);

            toReturn = Map(schoolInformation);

            if (!string.IsNullOrEmpty(fields))
            {
                toReturn = toReturn.Pick(fields);
            }

            return(toReturn);
        }