Exemplo n.º 1
0
        public static Forecast SuppliedFrom(ForecastContainerDTO apiForecastData)
        {
            if (apiForecastData.Cod != 200)
            {
                throw new ApiException(apiForecastData.Message, HttpStatusCode.BadRequest);
            }

            if (!apiForecastData.List.Any())
            {
                throw new ApiException("No data", HttpStatusCode.BadRequest);
            }

            var forecastSegments = new List <Weather>();
            var days             = new List <Weather>();
            var city             = apiForecastData.City?.Name;

            foreach (var apiDataSegment in apiForecastData.List)
            {
                forecastSegments.Add(Weather.SuppliedFrom(apiDataSegment));
            }

            foreach (var group in forecastSegments.GroupBy(x => x.AtDateTime.ToShortDateString()))
            {
                days.Add(Weather.CreateFrom(forecastSegments.Where(x => x.AtDateTime.ToShortDateString() == group.Key)));
            }

            return(new Forecast(city, days));
        }
        public async Task <ForecastViewModel> Handle(ZipCodeForecastQuery request, CancellationToken cancellationToken)
        {
            var apiWeatherDataString = await _router.SendRequest(HttpMethod.Get, $"forecast?zip={request.ZipCode}&units={_units}", cancellationToken);

            ForecastContainerDTO weatherApiData = JsonConvert.DeserializeObject <ForecastContainerDTO>(apiWeatherDataString);

            return(Mapper.Map <Forecast, ForecastViewModel>(Forecast.SuppliedFrom(weatherApiData)));
        }