List <string> IForecastStrategy.GetForecast(int zipcode, ITemperatureStrategy temperatureStrategy, DateTime date) { List <string> result = new List <string>(); for (int fourteenDayCounter = 0; fourteenDayCounter < 14; fourteenDayCounter++) { result = _weatherForecast.GetFourteenDayWeatherForecast(zipcode, temperatureStrategy, date.AddDays(fourteenDayCounter)); } return(result); }
List <string> IForecastStrategy.GetForecast(int zipcode, ITemperatureStrategy temperatureStrategy, DateTime date) { List <string> result = new List <string>(); try { result = _weatherForecast.GetThreeDayWeatherForecast(zipcode, temperatureStrategy, date); } catch { } return(result); }
List <string> IForecastStrategy.GetForecast(int zipcode, ITemperatureStrategy temperatureStrategy, DateTime date) { List <string> result = new List <string>(); try { result.Add(_weatherForecast.GetWeatherForecastForZip(zipcode, temperatureStrategy, date)); } catch { //ToDo Logging throw; } return(result); }
public List <string> GetHourlyWeatherForecast(int zipcode, ITemperatureStrategy temperatureStrategy, DateTime date) { List <string> result = new List <string>(); var hourlyData = Task.Run(() => _weatherForecastProvider.GetHourlyWeather(zipcode)); hourlyData.Wait(); HourlyValuesDomainModel model = hourlyData.Result; foreach (var hour in model.HourlyValues) { TemperatureInfo temperatureInfo = temperatureStrategy.GetTemperatureFromKelvin(hour.Temperature); double roundedTemperature = Math.Round(temperatureInfo.Temperature); result.Add($"In {zipcode} hat es am {hour.Time.ToString("dd/MM/yyyy, HH:mm")} Uhr {roundedTemperature} {temperatureInfo.Display} und es ist {hour.WeatherDescription}"); } return(result); }
public string GetWeatherForecastForZip(int zipcode, ITemperatureStrategy temperatureStrategy, DateTime date) { //ToDo: Get API Key from Settings // Use DI here instead of creating OpenWeatherAPI here ( Provider can be easily changed later) // OpenWeatherAPI openWeatherAPI = new OpenWeatherAPI(_httpClient, "a1fcc507923163ff1bae113a80d8f82a"); var data = Task.Run(() => _weatherForecastProvider.GetCurrentWeather(zipcode)); data.Wait(); CurrentWeatherDomainModel model = data.Result; float temperatureKelvin = model.Temperature; string cloudiness = model.WeatherDescription; TemperatureInfo temperatureInfo = temperatureStrategy.GetTemperatureFromKelvin(temperatureKelvin); double roundedTemperature = Math.Round(temperatureInfo.Temperature); return($"In {zipcode} hat es am {date.ToString("d")} {roundedTemperature} {temperatureInfo.Display} und es ist {cloudiness}" + Environment.NewLine); }
public List <string> GetForecast( int zipcode, DateTime date, TemperatureTypeEnum temperatureType, ForecastTypeEnum forecastType) { try { CheckParametersValid(zipcode, date, temperatureType, forecastType); } catch (ArgumentException ae) { //ToDo Fehlermeldung an UI } // = "Orchestrierung", ruft Methoden auf ohne zu wissen, woher bspw. Parameter herkommen // Funktionales Programmieren _temperatureStrategy = TemperatureStrategyFactory.GetTemperatureStrategy(temperatureType); // Exercise: New Provider (e.g. Random) and change next Line to see if it still work IWeatherForecastProvider weatherForecastProvider = new OpenWeatherAPI(HttpClientFactory.CreateClient(), "a1fcc507923163ff1bae113a80d8f82a"); WeatherForecast weatherForecast = new WeatherForecast(weatherForecastProvider); _forecastStrategy = ForecastStrategyFactory.GetForecastStrategy(forecastType, weatherForecast); List <string> result = new List <string>(); try { result = _forecastStrategy.GetForecast(zipcode, _temperatureStrategy, date); } catch (ZipNotFoundException ex) { result.Add(ex.Message); } catch (Exception ex) { result.Add($"Exception: {ex.Message}"); } return(result); }
public List <string> GetThreeDayWeatherForecast(int zipcode, ITemperatureStrategy temperatureStrategy, DateTime date) { List <string> result = new List <string>(); var threeDayData = Task.Run(() => _weatherForecastProvider.GetWeatherForThreeDays(zipcode)); threeDayData.Wait(); ThreeDayValuesDomainModel model = threeDayData.Result; foreach (var day in model.ThreeDayValues) { TemperatureInfo MorningTemperatureInfo = temperatureStrategy.GetTemperatureFromKelvin(day.DailyMorningTemperature); double roundedMorningTemperature = Math.Round(MorningTemperatureInfo.Temperature); TemperatureInfo DayTemperatureInfo = temperatureStrategy.GetTemperatureFromKelvin(day.DailyDayTemperature); double roundedDayTemperature = Math.Round(DayTemperatureInfo.Temperature); TemperatureInfo EveningTemperatureInfo = temperatureStrategy.GetTemperatureFromKelvin(day.DailyEveningTemperature); double roundedEveningTemperature = Math.Round(EveningTemperatureInfo.Temperature); result.Add($"In {zipcode} hat es am {day.Time.ToString("d")} morgens {roundedMorningTemperature} {MorningTemperatureInfo.Display} und es ist {day.WeatherDescription}"); result.Add($"In {zipcode} hat es am {day.Time.ToString("d")} mittags {roundedDayTemperature} {DayTemperatureInfo.Display} und es ist {day.WeatherDescription}"); result.Add($"In {zipcode} hat es am {day.Time.ToString("d")} mittags {roundedEveningTemperature} {EveningTemperatureInfo.Display} und es ist {day.WeatherDescription}"); } return(result); }
public List <string> GetFourteenDayWeatherForecast(int zipcode, ITemperatureStrategy temperatureStrategy, DateTime date) { List <string> result = new List <string>(); var fourteenDayData = Task.Run(() => _weatherForecastProvider.GetWeatherForFourteenDays(zipcode)); fourteenDayData.Wait(); FourteenDayValuesDomainModel model = fourteenDayData.Result; foreach (var day in model.FourteenDayValues) { if (day.WeatherDescription == "Empty Data") { result.Add("Keine Wetterdaten vorhanden"); } else { TemperatureInfo temperatureInfo = temperatureStrategy.GetTemperatureFromKelvin(day.Temperature); double roundedTemperature = Math.Round(temperatureInfo.Temperature); result.Add($"In {zipcode} hat es am {day.Time.ToString("d")} {roundedTemperature} {temperatureInfo.Display} und es ist {day.WeatherDescription}"); } } return(result); }
public List <string> GetForecast(int zipcode, ITemperatureStrategy temperatureStrategy, DateTime date) { return(_weatherForecast.GetHourlyWeatherForecast(zipcode, temperatureStrategy, date)); }