Exemple #1
0
        /// <summary>
        /// Получение данных о погоде,и запись в бд
        /// </summary>
        /// <param name="state"></param>
        public void GetWeathers(object state)
        {
            try
            {
                using (var scope = _scopeFactory.CreateScope())
                    using (var db = scope.ServiceProvider.GetRequiredService <WeatherContext>())
                    {
                        _logger.LogInformation("Отправка запроса на полученние данных...");

                        HttpWebRequest  httpWebRequest  = (HttpWebRequest)WebRequest.Create(url);
                        HttpWebResponse httpWebResponse = (HttpWebResponse)httpWebRequest.GetResponse();

                        string weather_json;
                        using (StreamReader streamReader = new StreamReader(httpWebResponse.GetResponseStream()))
                            weather_json = streamReader.ReadToEnd();

                        Root     weather_response = JsonConvert.DeserializeObject <Root>(weather_json);
                        DateTime datatime         = DateTimeExtension.LongToDateTime(weather_response.dt)
                                                    .AddHours(4);

                        if (db.WeatherMain.Where(p => p.DateTime == datatime).FirstOrDefault() == null)
                        {
                            WeatherMain weather = new WeatherMain
                            {
                                Name         = weather_response.name,
                                DateTime     = datatime,
                                Main         = weather_response.weather.FirstOrDefault().main,
                                Description  = weather_response.weather.FirstOrDefault().description,
                                Temp         = weather_response.main.temp,
                                TempMax      = weather_response.main.temp_max,
                                TempMin      = weather_response.main.temp_min,
                                FeelsLike    = weather_response.main.feels_like,
                                Pressure     = weather_response.main.pressure,
                                Humidity     = weather_response.main.humidity,
                                WindSpeed    = weather_response.wind.speed,
                                WindDeg      = weather_response.wind.deg,
                                Clouds       = weather_response.clouds.all,
                                OriginalJson = weather_json
                            };

                            if (weather_response.rain != null)
                            {
                                weather.Rain1h = weather_response.rain.H1;
                                weather.Rain3h = weather_response.rain.H3;
                            }
                            if (weather_response.snow != null)
                            {
                                weather.Snow1h = weather_response.snow.H1;
                                weather.Snow3h = weather_response.snow.H3;
                            }

                            db.WeatherMain.Add(weather);
                            db.SaveChanges();

                            _logger.LogInformation("Данные успешно сохранены");
                        }
                    }
            }
            catch (Exception ex)
            {
                _logger.LogInformation($"Ошибка получение данных: {ex.Message}");
                Console.WriteLine($"Ошибка получение данных: {ex.Message}");
            }
        }