public CitiesDataContext GetCityByYaId(string yaid) { CitiesDataContext context = new CitiesDataContext(); string sql = "select * from cities where yandexID = '" + yaid + "'"; SQLiteCommand command = new SQLiteCommand(sql, m_dbConnection); SQLiteDataReader reader = command.ExecuteReader(); foreach (DbDataRecord record in reader) { context.name = record["name"].ToString(); context.owmID = record["owmID"].ToString(); context.regionID = int.Parse(record["regionID"].ToString()); context.yandexID = int.Parse(record["yandexID"].ToString()); } return(context); }
public DataAccessLevel.Forecast GetForecat(string path, ProgressBar pb) { DataAccessLevel.SQLiteDatabaseWorker worker = new DataAccessLevel.SQLiteDatabaseWorker(); DataAccessLevel.Forecast forecast = new DataAccessLevel.Forecast(); // получаем текущий город из настроек worker.SetConnect(path); DataAccessLevel.SettingsDataContext sdc = worker.GetSettings(); // текущие настройки DataAccessLevel.SettingsDataContext altSet = worker.GetAltSetStr(sdc); CurCity = worker.GetCurCityName(sdc.cityID.ToString()); worker.CloseConnect(); // CurCity // sdc.cityID - id выбранного города // sdc.ID - id настройки try { HttpWebRequest reqFP = (HttpWebRequest)HttpWebRequest.Create("http://www.google.com"); HttpWebResponse rspFP = (HttpWebResponse)reqFP.GetResponse(); if (HttpStatusCode.OK == rspFP.StatusCode) { // HTTP = 200 - Интернет безусловно есть! rspFP.Close(); DataAccessLevel.Forecast yandexForecast = new DataAccessLevel.Forecast(); DataAccessLevel.Forecast owmForecast = new DataAccessLevel.Forecast(); // DataAccessLevel.CurrentWeather yaCurWeather = new DataAccessLevel.CurrentWeather(); // получаем текущее время - нужен id текущий города на яндексе Date_Time.GetTime getter = new Date_Time.GetTime(); DateTime CurDate = getter.Yandex_Time(sdc.cityID); CurData = CurDate; // получаем город по ид яндекса GetCityByYaId worker.SetConnect(path); DataAccessLevel.CitiesDataContext city = worker.GetCityByYaId(sdc.cityID.ToString()); worker.CloseConnect(); // получаем прогнозы // получаем прогноз с яндекса Yandex.YandexMethods yaworker2 = new Yandex.YandexMethods(); yaworker2.GetYandexForecast(sdc.cityID.ToString(), yandexForecast); // с owm OpenWeatherMap.APIWorker owmworker = new APIWorker(); owmForecast = owmworker.GetWeather(city.name, city.owmID); switch (sdc.sourceID) { case 1: // owm worker.SetConnect(path); worker.SaveForecast(owmForecast, pb, sdc); worker.SaveForecast(yandexForecast, pb, altSet); worker.CloseConnect(); break; case 2: // ya worker.SetConnect(path); worker.SaveForecast(owmForecast, pb, altSet); worker.SaveForecast(yandexForecast, pb, sdc); worker.CloseConnect(); return(yandexForecast); } worker.SetConnect(path); forecast = worker.GetForecast(CurDate); worker.CloseConnect(); // if (sdc.sourceID == 2) // forecast.curWeather = yaCurWeather; return(forecast); // switch (sdc.sourceID) // { // case 1: // owm // // получаем город по ид яндекса GetCityByYaId // worker.SetConnect(path); // DataAccessLevel.CitiesDataContext city = worker.GetCityByYaId(sdc.cityID.ToString()); // worker.CloseConnect(); // // получаем прогноз owm по названию или owmid // OpenWeatherMap.APIWorker owmworker = new APIWorker(); // DataAccessLevel.Forecast owmForecast = owmworker.GetWeather(city.name, city.owmID); // // получаем прогноз с яндекса // Yandex.YandexMethods yaworker2 = new Yandex.YandexMethods(); // yaworker2.GetYandexForecast(sdc.cityID.ToString(), yandexForecast); // // сохраняем в базу // worker.SetConnect(path); // worker.SaveForecast(yandexForecast, pb, altSet); // worker.CloseConnect(); // // сохраняем в базу // worker.SetConnect(path); // worker.SaveForecast(owmForecast, pb); // worker.CloseConnect(); // break; // case 2: // яндекс // // получаем прогноз с яндекса (по ID города яндекса) // Yandex.YandexMethods yaworker = new Yandex.YandexMethods(); // yaworker.GetYandexForecast(sdc.cityID.ToString(), yandexForecast); // // сохраняем в базу // worker.SetConnect(path); // worker.SaveForecast(yandexForecast, pb); // worker.CloseConnect(); // //break; // //yaCurWeather = yandexForecast.curWeather; // return yandexForecast; // //break; // default: // break; // } // // получаем прогноз из базы по установленному в настройках серверу // worker.SetConnect(path); // forecast = worker.GetForecast(CurDate); // worker.CloseConnect(); //// if (sdc.sourceID == 2) // // forecast.curWeather = yaCurWeather; // return forecast; } else { CurData = DateTime.Now; // сервер вернул отрицательный ответ, возможно что инета нет rspFP.Close(); MessageBox.Show("Подключение к интернету ограничено, данные могут быть неточными"); // получаем прогноз из базы по установленному в настройках серверу worker.SetConnect(path); forecast = worker.GetForecast(DateTime.Now); worker.CloseConnect(); return(forecast); } } catch (WebException) { CurData = DateTime.Now; // Ошибка, значит интернета у нас нет. Плачем :'( MessageBox.Show("Невозможно подключиться к интернету, данные могут быть неточными"); // получаем прогноз из базы по установленному в настройках серверу worker.SetConnect(path); forecast = worker.GetForecast(DateTime.Now); worker.CloseConnect(); return(forecast); } }