Ejemplo n.º 1
0
 public StopsController(IWorldRepository repository,
                        ILogger <StopsController> logger,
                        GeoCodeService geoService)
 {
     _repository = repository;
     _logger     = logger;
     _geoService = geoService;
 }
Ejemplo n.º 2
0
        private void FindButtonClick(object sender, RoutedEventArgs e)
        {
            #region Получение координат
            string    geoCodeUrl = $"https://geocode-maps.yandex.ru/1.x/?geocode={findTextBox.Text}&format=json";
            string    json       = "";
            WebClient client     = new WebClient();
            using (Stream stream = client.OpenRead(geoCodeUrl))
            {
                using (var reader = new StreamReader(stream))
                {
                    string line = "";
                    while ((line = reader.ReadLine()) != null)
                    {
                        json += line;
                    }
                }
            }
            GeoCodeService geoCodeService = new GeoCodeService();
            geoCodeService = JsonConvert.DeserializeObject <GeoCodeService>(json);
            if (geoCodeService.Response.GeoObjectCollection.MetaDataProperty.GeocoderResponseMetaData.BoundedBy is null)
            {
                MessageBox.Show("Wrong input!");
                return;
            }
            #endregion

            #region Получение данных о погоде

            bool   isLongitude = true;
            string longitude   = "";
            string latitude    = "";

            foreach (var symbol in geoCodeService.Response.GeoObjectCollection.MetaDataProperty.GeocoderResponseMetaData.BoundedBy.Position.LowerCorner)
            {
                if (symbol == ' ')
                {
                    isLongitude = false;
                    continue;
                }
                if (isLongitude)
                {
                    longitude += symbol;
                }
                else
                {
                    latitude += symbol;
                }
            }

            WebRequest request = WebRequest.Create($"https://api.weather.yandex.ru/v1/forecast?lat={latitude}lon={longitude}&extra=true&lang=ru_RU&limit=7");
            request.Headers.Add("X-Yandex-API-Key", "2f174269-cd88-4e10-9520-9a1e8f51dcf4");
            WebResponse response = request.GetResponse();
            json = "";
            using (Stream stream = response.GetResponseStream())
            {
                using (StreamReader reader = new StreamReader(stream))
                {
                    string line = "";
                    while ((line = reader.ReadLine()) != null)
                    {
                        json += line;
                    }
                }
            }
            response.Close();

            Weather weather = new Weather();

            weather = JsonConvert.DeserializeObject <Weather>(json);

            #endregion

            todayDockPanel.IsEnabled = true;
            daysStackPanel.IsEnabled = true;


            #region Заполнение данными
            firstDateLable.Content = weather.Forecasts[0].Date;

            firstDayWeatherImage.Kind = GetWeatherImage(weather.Forecasts[0].Parts.Day);

            firstNightTemperatureLable.Content   = weather.Forecasts[0].Parts.Night.TempAvg.ToString();
            firstMorningTemperatureLable.Content = weather.Forecasts[0].Parts.Morning.TempAvg.ToString();
            firstDayTemperatureLable.Content     = weather.Forecasts[0].Parts.Day.TempAvg.ToString();
            firstEveningTemperatureLable.Content = weather.Forecasts[0].Parts.Evening.TempAvg.ToString();


            secondDateLable.Content = weather.Forecasts[1].Date;

            secondDayWeatherImage.Kind = GetWeatherImage(weather.Forecasts[1].Parts.Day);

            secondNightTemperatureLable.Content   = weather.Forecasts[1].Parts.Night.TempAvg.ToString();
            secondMorningTemperatureLable.Content = weather.Forecasts[1].Parts.Morning.TempAvg.ToString();
            secondDayTemperatureLable.Content     = weather.Forecasts[1].Parts.Day.TempAvg.ToString();
            secondEveningTemperatureLable.Content = weather.Forecasts[1].Parts.Evening.TempAvg.ToString();


            thirdDateLable.Content = weather.Forecasts[2].Date;

            thirdDayWeatherImage.Kind = GetWeatherImage(weather.Forecasts[2].Parts.Day);

            thirdNightTemperatureLable.Content   = weather.Forecasts[2].Parts.Night.TempAvg.ToString();
            thirdMorningTemperatureLable.Content = weather.Forecasts[2].Parts.Morning.TempAvg.ToString();
            thirdDayTemperatureLable.Content     = weather.Forecasts[2].Parts.Day.TempAvg.ToString();
            thirdEveningTemperatureLable.Content = weather.Forecasts[2].Parts.Evening.TempAvg.ToString();


            fourthDateLable.Content = weather.Forecasts[3].Date;

            fourthDayWeatherImage.Kind = GetWeatherImage(weather.Forecasts[3].Parts.Day);

            fourthNightTemperatureLable.Content   = weather.Forecasts[3].Parts.Night.TempAvg.ToString();
            fourthMorningTemperatureLable.Content = weather.Forecasts[3].Parts.Morning.TempAvg.ToString();
            fourthDayTemperatureLable.Content     = weather.Forecasts[3].Parts.Day.TempAvg.ToString();
            fourthEveningTemperatureLable.Content = weather.Forecasts[3].Parts.Evening.TempAvg.ToString();


            fifthDateLable.Content = weather.Forecasts[4].Date;

            fifthDayWeatherImage.Kind = GetWeatherImage(weather.Forecasts[4].Parts.Day);

            fifthNightTemperatureLable.Content   = weather.Forecasts[4].Parts.Night.TempAvg.ToString();
            fifthMorningTemperatureLable.Content = weather.Forecasts[4].Parts.Morning.TempAvg.ToString();
            fifthDayTemperatureLable.Content     = weather.Forecasts[4].Parts.Day.TempAvg.ToString();
            fifthEveningTemperatureLable.Content = weather.Forecasts[4].Parts.Evening.TempAvg.ToString();


            sixthDateLable.Content = weather.Forecasts[5].Date;

            sixthDayWeatherImage.Kind = GetWeatherImage(weather.Forecasts[5].Parts.Day);

            sixthNightTemperatureLable.Content   = weather.Forecasts[5].Parts.Night.TempAvg.ToString();
            sixthMorningTemperatureLable.Content = weather.Forecasts[5].Parts.Morning.TempAvg.ToString();
            sixthDayTemperatureLable.Content     = weather.Forecasts[5].Parts.Day.TempAvg.ToString();
            sixthEveningTemperatureLable.Content = weather.Forecasts[5].Parts.Evening.TempAvg.ToString();


            seventhDateLable.Content = weather.Forecasts[6].Date;

            seventhDayWeatherImage.Kind = GetWeatherImage(weather.Forecasts[6].Parts.Day);

            seventhNightTemperatureLable.Content   = weather.Forecasts[6].Parts.Night.TempAvg.ToString();
            seventhMorningTemperatureLable.Content = weather.Forecasts[6].Parts.Morning.TempAvg.ToString();
            seventhDayTemperatureLable.Content     = weather.Forecasts[6].Parts.Day.TempAvg.ToString();
            seventhEveningTemperatureLable.Content = weather.Forecasts[6].Parts.Evening.TempAvg.ToString();
            #endregion
        }