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);
        }
示例#2
0
        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);
            }
        }