public async Task <IActionResult> GetDailySummary( [FromQuery(Name = "lat")] decimal?latitude, [FromQuery(Name = "lng")] decimal?longitude, [FromQuery(Name = "height")] decimal?height) { ForecastSeries forecast = await _weatherClient.GetLocationForecastAsync( new Location(latitude ?? 999, longitude ?? 999, height ?? 0)); var result = from f in forecast.Forecasts group f by f.Time.Date into g select new { Date = g.Key, MaxTemp = g.Max(g => g.MaxTemperature6h), MinTemp = g.Min(g => g.MinTemperature6h), Rain = g.Sum(g => g.Precipitation6h), MaxGust = g.Max(g => g.WindSpeed), AvgWind = g.Average(g => g.WindSpeed), Icon9h = g.FirstOrDefault(g => g.Time.Hour == 9)?.IconUrl ?? "", Icon15h = g.FirstOrDefault(g => g.Time.Hour == 15)?.IconUrl ?? "", Icon21h = g.FirstOrDefault(g => g.Time.Hour == 21)?.IconUrl ?? "" }; return(Ok(result)); }
public async Task <ActionResult <ForecastSeries> > Get( [FromQuery(Name = "lat")] decimal?latitude, [FromQuery(Name = "lng")] decimal?longitude, [FromQuery(Name = "height")] decimal?height) { if (latitude == null || longitude == null) { return(BadRequest()); } ForecastSeries forecast = await _weatherClient.GetLocationForecastAsync( new Location(latitude ?? 0, longitude ?? 0, height ?? 0)); return(Ok(forecast)); }
public async Task <ActionResult <ForecastSeries> > GetDailyForecast( DateTime day, [FromQuery(Name = "lat")] decimal?latitude, [FromQuery(Name = "lng")] decimal?longitude, [FromQuery(Name = "height")] decimal?height) { if (latitude == null || longitude == null) { return(BadRequest()); } ForecastSeries forecast = await _weatherClient.GetLocationForecastAsync( new Location(latitude ?? 0, longitude ?? 0, height ?? 0)); return(Ok(new { forecast.Location, forecast.RunTime, Forecasts = forecast.Forecasts.Where(f => f.Time.Date == day.Date) })); }