Exemplo n.º 1
0
        public async Task <ResponseModel <List <Statistics> > > GetStatistics(StatisticsDataRequest statisticsDataRequest)
        {
            var statisticsData = await statisticsService.GetStatististicsData(statisticsDataRequest);

            var statistics = statisticsData
                             .StatisticsData
                             .Where(data => !string.IsNullOrEmpty(data.Value) && !string.IsNullOrEmpty(data.Country.Id))
                             .Select(data => new Statistics
            {
                CountryCode = data.Country?.Id,
                IndicatorId = data.Indicator?.Id,
                Year        = data.Year,
                Value       = data.Value
            })
                             .ToList();

            return(new ResponseModel <List <Statistics> >(statistics));
        }
        public async Task <StatisticsDataResponse> GetStatististicsData(StatisticsDataRequest statisticsDataRequest)
        {
            var requestUrl = worldBankUrl
                             .AppendPathSegment(countriesPath)
                             .AppendPathSegment(string.Join(";", statisticsDataRequest.CountriesIds))
                             .AppendPathSegment(indicatorPath)
                             .AppendPathSegment(statisticsDataRequest.IndicatorId)
                             .SetQueryParams(new
            {
                date   = statisticsDataRequest.Year,
                format = responseFormat
            });

            string response;

            try
            {
                response = await httpClient.GetStringAsync(requestUrl);
            }
            catch (Exception exception)
            {
                return(new StatisticsDataResponse
                {
                    Succsess = false,
                    ErrorMessage = exception.Message
                });
            }

            var jsonStrings = JsonConvert.DeserializeObject <List <object> >(response);

            return(new StatisticsDataResponse
            {
                StatisticBaseData = JsonConvert.DeserializeObject <StatisticBaseData>(jsonStrings[0].ToString()),
                StatisticsData = jsonStrings[1] != null
                    ? JsonConvert.DeserializeObject <List <StatisticData> >(jsonStrings[1].ToString())
                    : new List <StatisticData>(),
                Succsess = true
            });
        }