Example #1
0
        public void CreateDefaultDB(string path)
        {
            // создаем файл бд
            DataAccessLevel.SQLiteDatabaseCreator creator = new DataAccessLevel.SQLiteDatabaseCreator();
            creator.CreateDataBaseFile(path);

            // создаем структуру таблиц
            creator.CreateTables(path);

            // вставляем одну стку настек по умолчанию
            DataAccessLevel.SettingsDataContext sdc = new DataAccessLevel.SettingsDataContext();
            sdc.cityID   = 27786;
            sdc.sourceID = 1; // по умолчанию - owm
            sdc.saveDate = DateTime.Now;

            DataAccessLevel.SQLiteDatabaseWorker worker = new DataAccessLevel.SQLiteDatabaseWorker();
            worker.SetConnect(path);
            worker.SaveSettings(sdc);
            worker.CloseConnect();

            // считываем города из файла
            DataAccessLevel.RegionCitiesLists DBlist = SaveCities(@"D:\cities.xml");

            // записываем города в базу
            worker.SetConnect(path);
            worker.FillCitiesAndRegionsTables(DBlist);
            worker.CloseConnect();
        }
Example #2
0
        public DataAccessLevel.Forecast GetCurWether(string path)
        {
            DataAccessLevel.SQLiteDatabaseWorker worker   = new DataAccessLevel.SQLiteDatabaseWorker();
            DataAccessLevel.Forecast             forecast = new DataAccessLevel.Forecast();

            // получаем текущий город из настроек

            worker.SetConnect(path);
            DataAccessLevel.SettingsDataContext sdc = worker.GetSettings(); // настройки
            worker.CloseConnect();

            // 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();

                    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);

                        // сохраняем в базу
                        worker.SetConnect(path);
                        worker.SaveForecast(owmForecast);
                        worker.CloseConnect();

                        break;

                    case 2:     // яндекс
                        // получаем прогноз с яндекса (по ID города яндекса)
                        Yandex.YandexMethods yaworker = new Yandex.YandexMethods();
                        yaworker.GetYandexForecast(sdc.cityID.ToString(), yandexForecast);

                        // сохраняем в базу
                        worker.SetConnect(path);
                        worker.SaveForecast(yandexForecast);
                        worker.CloseConnect();

                        return(yandexForecast);

                    default:
                        break;
                    }

                    // получаем текущее время - нужен id текущий города на яндексе
                    Date_Time.GetTime getter  = new Date_Time.GetTime();
                    DateTime          CurDate = getter.Yandex_Time(sdc.cityID);


                    // получаем прогноз из базы по установленному в настройках серверу

                    worker.SetConnect(path);
                    forecast = worker.GetForecast(CurDate);
                    worker.CloseConnect();


                    int a = 0;

                    return(forecast);
                }


                else
                {
                    // сервер вернул отрицательный ответ, возможно что инета нет
                    rspFP.Close();
                    MessageBox.Show("Подключение к интернету ограничено, данные могут быть неточными");

                    // получаем текущее время - нужен id текущий города на яндексе
                    Date_Time.GetTime getter  = new Date_Time.GetTime();
                    DateTime          CurDate = getter.Yandex_Time(sdc.cityID);


                    // получаем прогноз из базы по установленному в настройках серверу

                    worker.SetConnect(path);
                    forecast = worker.GetForecast(CurDate);
                    worker.CloseConnect();

                    return(forecast);
                }
            }
            catch (WebException)
            {
                // Ошибка, значит интернета у нас нет. Плачем :'(
                MessageBox.Show("Невозможно подключиться к интернету, данные могут быть неточными");

                // получаем прогноз из базы по установленному в настройках серверу

                worker.SetConnect(path);
                forecast = worker.GetForecast(DateTime.Now);
                worker.CloseConnect();

                return(forecast);
            }
        }