public MainWindow()
        {
            InitializeComponent();
            DataContext = new OpenWeatherViewModel();

            ApiHelper.InitializeClient();
        }
        public void InitializeViewModelTest()
        {
            OpenWeatherViewModel vm = new OpenWeatherViewModel(null, DateTime.Today.ToShortDateString());

            vm.InitializeViewModel();
            Assert.IsNull(vm.HourlyDate);
        }
        public void ShowWeatherInfoTest()
        {
            OpenWeatherViewModel vm = new OpenWeatherViewModel(null, DateTime.Today.ToShortDateString());

            vm.InitializeViewModel();
            Assert.IsNull(vm.HourlyDate);
            vm.ShowWeatherInfo(DateTime.Today.ToShortDateString());
            Assert.IsNull(vm.Clouds_All);
        }
        private async void LoadCountrisTask()
        {
            var l = await OpenWeatherViewModel.GetCountriesAsync();

            foreach (var x in l.OrderBy(y => y.Value))
            {
                this.ComboBoxCountry.Items.Add(new ComboBoxItem {
                    Tag = x.Key, Content = x.Value
                });
            }
            this.ComboBoxCountry.IsTextSearchEnabled = true;
        }
        public OpenWeatherModel Get(int airportId)
        {
            AirportModel airport = new AirportModel();

            using (var connection = GetOpenConnection())
            {
                airport = connection.Query <AirportModel>(
                    @"select AirportId, AirportName, CityName, CountryName, AirportCode, Latitude, Longitude
                        from Airports where AirportId = " + airportId).FirstOrDefault();//<= TODO: use parameters
            }
            //TODO: add link to config
            string urlBase = "http://api.openweathermap.org/data/2.5/onecall?lat={0}&lon={1}&exclude=minutely,hourly,daily&APPID=6ce31626181846df8fb15eed32a345b0&units=metric";
            string url     = String.Format(urlBase, airport.Latitude, airport.Longitude);
            OpenWeatherViewModel weatherForecastViewModel = new OpenWeatherViewModel();
            string         answer;
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);

            request.AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate;

            using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
                using (Stream stream = response.GetResponseStream())
                    using (StreamReader reader = new StreamReader(stream))
                    {
                        answer = reader.ReadToEnd();
                    }

            weatherForecastViewModel = JsonConvert.DeserializeObject <OpenWeatherViewModel>(answer);

            OpenWeatherModel model = new OpenWeatherModel();

            model = new OpenWeatherModel
            {
                CountryName            = airport.AirportName,//TODO: change property to airpirtName
                Sunrise                = new DateTime(1970, 1, 1, 0, 0, 0, 0, System.DateTimeKind.Utc).AddSeconds(weatherForecastViewModel.Current.Sunrise).ToLocalTime(),
                Sunset                 = new DateTime(1970, 1, 1, 0, 0, 0, 0, System.DateTimeKind.Utc).AddSeconds(weatherForecastViewModel.Current.Sunset).ToLocalTime(),
                Temperature            = weatherForecastViewModel.Current.Temp,
                WeatherMainDescription = weatherForecastViewModel.Current.Weather.Select(w => w.Main).Aggregate((i, j) => i + " " + j),
                Updated                = DateTime.Now,
                Icon = "http://openweathermap.org/img/wn/" + weatherForecastViewModel.Current.Weather.First()?.Icon + "@2x.png"
            };

            return(model);
        }
        private async void ButonSearchLatitudeLongitude_OnClick(object sender, RoutedEventArgs e)
        {
            this.InitVisibility(Visibility.Collapsed);
            try
            {
                var data = await OpenWeatherViewModel.GetWeatherAsync(((ComboBoxItem)ComboBoxCountry.SelectedItem).Tag.ToString(), this.TextBoxPostalCode.Text);

                data.ForecastViewModel = await ForecastViewModel.GetForecastAsync(((ComboBoxItem)ComboBoxCountry.SelectedItem).Tag.ToString(), this.TextBoxPostalCode.Text);

                DataContext = data;

                this.InitVisibility(Visibility.Visible);
            }
            catch (System.Net.Http.HttpRequestException exception)
            {
#if DEBUG
                Console.WriteLine(exception);
#endif
            }
        }
 public OpenWeatherView()
 {
     InitializeComponent();
     BindingContext = new OpenWeatherViewModel(Navigation);
 }