Ejemplo n.º 1
0
        /// <summary>
        /// Сохраняет строку с настройками в таблице settings
        /// </summary>
        /// <param name="setObj">объект класса SettingsDataContext</param>
        public void SaveSettings(SettingsDataContext setObj)
        {
            // проверить наличие настройки с параметрами в базе
            string           sql     = "SELECT * FROM settings WHERE cityID = '" + setObj.cityID + "' AND sourseID = '" + setObj.sourceID + "';";
            SQLiteCommand    command = new SQLiteCommand(sql, m_dbConnection);
            SQLiteDataReader reader  = command.ExecuteReader();
            // считаем
            int count = 0;

            foreach (DbDataRecord record in reader)
            {
                count++;
            }
            if (count > 0)
            {
                // update
                sql     = @"UPDATE settings SET
                        saveDate = '" + DateTime.Now + "' WHERE cityID = '" + setObj.cityID + "' AND sourseID = '" + setObj.sourceID + "';";
                command = new SQLiteCommand(sql, m_dbConnection);
                command.ExecuteNonQuery();
            }
            else
            {
                // insert
                sql     = @"INSERT INTO settings
                                (cityID, sourseID, saveDate)
                           VALUES ('" + setObj.cityID.ToString() + "', '" + setObj.sourceID.ToString() + "', '" + DateTime.Now + "')";
                command = new SQLiteCommand(sql, m_dbConnection);
                command.ExecuteNonQuery();
            }
        }
Ejemplo n.º 2
0
        // Получаем настройки из базы
        private void button4_Click(object sender, EventArgs e)
        {
            SQLiteDatabaseWorker worker = new SQLiteDatabaseWorker();

            worker.SetConnect(Program.DBName);

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

            worker.CloseConnect();
        }
        public SettingsDataContext GetAltSetStr(SettingsDataContext curSet)
        {
            SettingsDataContext altSet = new SettingsDataContext();

            // пробуем получить альтернативную настройку
            string           sql     = "SELECT * FROM 'settings' WHERE cityID = '" + curSet.cityID + "' AND sourseID <> '" + curSet.sourceID + "' ";
            SQLiteCommand    command = new SQLiteCommand(sql, m_dbConnection);
            SQLiteDataReader reader  = command.ExecuteReader();
            int count = 0;

            foreach (DbDataRecord record in reader)
            {
                count++;
                altSet.cityID   = int.Parse(record["cityID"].ToString());
                altSet.ID       = int.Parse(record["ID"].ToString());
                altSet.saveDate = DateTime.Parse(record["saveDate"].ToString());
                altSet.sourceID = int.Parse(record["sourseID"].ToString());
            }

            if (count > 0)
            {
                return(altSet);
            }
            else
            {
                int sID = 1;
                if (curSet.sourceID == 1)
                {
                    sID = 2;
                }
                else
                {
                    sID = 1;
                }
                // если такой строки настроек нет, то добавляем ее
                sql     = @"INSERT INTO settings
                                (cityID, sourseID, saveDate)
                           VALUES ('" + curSet.cityID + "', '" + sID + "', '" + DateTime.Now.AddYears(-1) + "')";
                command = new SQLiteCommand(sql, m_dbConnection);
                command.ExecuteNonQuery();

                sql     = "SELECT * FROM 'settings' WHERE cityID = '" + curSet.cityID + "' AND sourseID <> '" + curSet.sourceID + "' ";
                command = new SQLiteCommand(sql, m_dbConnection);
                reader  = command.ExecuteReader();
                foreach (DbDataRecord record in reader)
                {
                    altSet.cityID   = int.Parse(record["cityID"].ToString());
                    altSet.ID       = int.Parse(record["ID"].ToString());
                    altSet.saveDate = DateTime.Parse(record["saveDate"].ToString());
                    altSet.sourceID = int.Parse(record["sourseID"].ToString());
                }
            }
            return(altSet);
        }
Ejemplo n.º 4
0
        /// <summary>
        /// Получает настройки из таблицы settings
        /// </summary>
        /// <returns>объект класса SettingsDataContext</returns>
        public SettingsDataContext GetSettings()
        {
            SettingsDataContext ret = new SettingsDataContext();

            string           sql     = "SELECT * FROM 'settings' order by saveDate DESC  Limit 1;";
            SQLiteCommand    command = new SQLiteCommand(sql, m_dbConnection);
            SQLiteDataReader reader  = command.ExecuteReader();

            foreach (DbDataRecord record in reader)
            {
                ret.ID       = int.Parse(record["ID"].ToString());
                ret.cityID   = int.Parse(record["cityID"].ToString());
                ret.sourceID = int.Parse(record["sourseID"].ToString());
                ret.saveDate = DateTime.Parse(record["saveDate"].ToString());
            }
            return(ret);
        }
Ejemplo n.º 5
0
        // сохранение настроек
        private void button3_Click(object sender, EventArgs e)
        {
            SettingsDataContext sdc = new SettingsDataContext();

            sdc.cityID   = 27786;
            sdc.sourceID = 1;

            //sdc.cityID = 12345;
            //sdc.sourceID = 7;



            sdc.saveDate = DateTime.Now;

            SQLiteDatabaseWorker worker = new SQLiteDatabaseWorker();

            worker.SetConnect(Program.DBName);
            worker.SaveSettings(sdc);
            worker.CloseConnect();
        }
Ejemplo n.º 6
0
        public List <WebTable> GetWebTable(string regID, string CitName, DateTime start, DateTime end)
        {
            // получаем id города
            int cityID = 0;

            List <WebTable>     table  = new List <WebTable>();
            SettingsDataContext owmSet = new SettingsDataContext();
            SettingsDataContext yaSet  = new SettingsDataContext();

            // достаем id нужного города из базы
            string           sql     = "select * from cities where name = '" + CitName + "' and regionID = '" + regID + "'";
            SQLiteCommand    command = new SQLiteCommand(sql, m_dbConnection);
            SQLiteDataReader reader  = command.ExecuteReader();

            foreach (DbDataRecord record in reader)
            {
                cityID = int.Parse(record["yandexID"].ToString());
            }

            // получаем строки настроек с нужным городом
            sql     = "select * from settings where cityID = '" + cityID.ToString() + "' and sourseID = '1' Limit 1";
            command = new SQLiteCommand(sql, m_dbConnection);
            reader  = command.ExecuteReader();

            foreach (DbDataRecord record in reader)
            {
                owmSet.cityID   = int.Parse(record["cityID"].ToString());
                owmSet.ID       = int.Parse(record["ID"].ToString());
                owmSet.sourceID = 1;
            }

            sql     = "select * from settings where cityID = '" + cityID.ToString() + "' and sourseID = '2' Limit 1";
            command = new SQLiteCommand(sql, m_dbConnection);
            reader  = command.ExecuteReader();

            foreach (DbDataRecord record in reader)
            {
                yaSet.cityID   = int.Parse(record["cityID"].ToString());
                yaSet.ID       = int.Parse(record["ID"].ToString());
                yaSet.sourceID = 1;
            }

            // получаем данные
            sql = "SELECT * FROM ten_days_forecasts where (periodDate > date('" + start.Date.ToString("yyyy-MM-dd") + "') and periodDate < date('" + end.Date.ToString("yyyy-MM-dd") + "')) and (settingID ='" + yaSet.ID.ToString() + "' or settingID = '" + yaSet.ID.ToString() + "')";
            //sql = "select * from ten_days_forecasts where (settingId = '1' or settingID = '2') order by periodDate ASC";

            command = new SQLiteCommand(sql, m_dbConnection);
            reader  = command.ExecuteReader();

            int count = 0;

            List <TenDaysForecastsDataContext> temp = new List <TenDaysForecastsDataContext>();

            foreach (DbDataRecord record in reader)
            {
                DateTime date = DateTime.Parse(reader["periodDate"].ToString());
                count++;
                int      id          = int.Parse(reader["ID"].ToString());
                int      settingID   = int.Parse(reader["settingID"].ToString());
                DateTime period      = DateTime.Parse(reader["periodDate"].ToString());
                string   timeOfDay   = reader["timeOfDay"].ToString();
                string   temperature = reader["temperature"].ToString();
                string   symbol      = reader["symbol"].ToString();

                temp.Add(new TenDaysForecastsDataContext {
                    periodDate = period, settingID = settingID, symbol = symbol, temperature = temperature, timeOfDay = timeOfDay
                });
            }

            // из полученного списка выбираем нужный диапазон дат
            // List<TenDaysForecastsDataContext> temp = (from t in _temp where (t.periodDate > start && t.periodDate < end) select t).ToList();


            // формируем список нужного вида
            for (int i = 0; i < temp.Count; i++)
            {
                // проверяем, есть ли в table запись с такой же датой
                if (table.Exists(x => x.date == temp[i].periodDate))
                {
                    // если есть, то обновляем ее
                    int ind = table.IndexOf(table.First(s => s.date == temp[i].periodDate));

                    if (temp[i].settingID == owmSet.ID)
                    {
                        if (temp[i].timeOfDay.ToLower() == "ночь")
                        {
                            table[ind].owmSymbolNight = temp[i].symbol.Trim('_');

                            table[ind].owmTempNight = int.Parse(temp[i].temperature);
                        }
                        else
                        {
                            table[ind].owmSymbolDay = temp[i].symbol.Trim('_');;
                            table[ind].owmTempDay   = int.Parse(temp[i].temperature);
                        }
                    }
                    else
                    {
                        if (temp[i].timeOfDay.ToLower() == "ночь")
                        {
                            table[ind].yaSymbolNight = temp[i].symbol;
                            table[ind].yaTempNight   = int.Parse(temp[i].temperature);
                        }
                        else
                        {
                            table[ind].yaSymbolDay = temp[i].symbol;
                            table[ind].yaTempDay   = int.Parse(temp[i].temperature);
                        }
                    }
                }
                else
                {
                    // добавляем новую
                    if (temp[i].settingID == owmSet.ID)
                    {
                        if (temp[i].timeOfDay.ToLower() == "ночь")
                        {
                            table.Add(new WebTable {
                                date = temp[i].periodDate, owmSymbolNight = temp[i].symbol.Trim('_'), owmTempNight = int.Parse(temp[i].temperature)
                            });
                        }
                        else
                        {
                            table.Add(new WebTable {
                                date = temp[i].periodDate, owmSymbolDay = temp[i].symbol.Trim('_'), owmTempDay = int.Parse(temp[i].temperature)
                            });
                        }
                    }
                    else
                    {
                        if (temp[i].timeOfDay.ToLower() == "ночь")
                        {
                            table.Add(new WebTable {
                                date = temp[i].periodDate, yaSymbolNight = temp[i].symbol, yaTempNight = int.Parse(temp[i].temperature)
                            });
                        }
                        else
                        {
                            table.Add(new WebTable {
                                date = temp[i].periodDate, yaSymbolDay = temp[i].symbol, yaTempDay = int.Parse(temp[i].temperature)
                            });
                        }
                    }
                }
            }
            return(table);
        }
Ejemplo n.º 7
0
        /// <summary>
        /// Получаем прогноз из базы данных
        /// </summary>
        /// <param name="Current">Текущие дата/время в формате DateTime</param>
        /// <returns>объект класса Forecast</returns>
        public Forecast GetForecast(DateTime Current)
        {
            SettingsDataContext sdc = GetSettings(); // получили текущие настройки

            List <string> setID = new List <string>();

            // получаем id всех настроек с похожими параметрами
            string           sql     = "SELECT * FROM 'settings' WHERE cityID = '" + sdc.cityID + "' AND sourseID = '" + sdc.sourceID + "';";
            SQLiteCommand    command = new SQLiteCommand(sql, m_dbConnection);
            SQLiteDataReader reader  = command.ExecuteReader();

            foreach (DbDataRecord record in reader)
            {
                setID.Add(record["ID"].ToString());
            }


            Forecast f = new Forecast();

            // вычисляем "текущий час"
            int CurHour = Current.Hour;

            switch (Current.Hour)
            {
            case 1:
            case 2:
                CurHour = 0;
                break;

            case 4:
            case 5:
                CurHour = 3;
                break;

            case 7:
            case 8:
                CurHour = 6;
                break;

            case 10:
            case 11:
                CurHour = 9;
                break;

            case 13:
            case 14:
                CurHour = 12;
                break;

            case 16:
            case 17:
                CurHour = 15;
                break;

            case 19:
            case 20:
                CurHour = 18;
                break;

            case 22:
            case 23:
                CurHour = 21;
                break;
            }



            // получаем прогноз на текущий момент
            sql     = "SELECT * FROM 'hourly_forecasts' WHERE settingId = '" + sdc.ID + "' AND periodDate = '" + Current.Date.ToString() + "' AND periodTime = '" + CurHour + "' LIMIT 1;";
            command = new SQLiteCommand(sql, m_dbConnection);
            reader  = command.ExecuteReader();

            foreach (DbDataRecord record in reader)
            {
                f.curWeather.description   = record["description"].ToString();
                f.curWeather.hummidity     = record["hummidity"].ToString();
                f.curWeather.pressure      = record["pressure"].ToString();
                f.curWeather.symbol        = record["symbol"].ToString();
                f.curWeather.temperature   = record["temperature"].ToString();
                f.curWeather.windDirection = record["windDirection"].ToString();
                f.curWeather.windSpeed     = record["windSpeed"].ToString();
            }

            // получаем прогноз на день


            sql = "SELECT * FROM 'daily_forecasts' WHERE settingId = '" + sdc.ID + "' AND (periodDate = '" + Current.Date.ToString() + "' OR periodDate = '" + Current.AddDays(1).Date.ToString() + "' OR periodDate = '" + Current.AddDays(2).Date.ToString() + "' OR periodDate = '" + Current.AddDays(3).Date.ToString() + "' OR periodDate = '" + Current.AddDays(4).Date.ToString() + "' OR periodDate = '" + Current.AddDays(5).Date.ToString() + "' OR periodDate = '" + Current.AddDays(6).Date.ToString() + "' OR periodDate = '" + Current.AddDays(7).Date.ToString() + "' OR periodDate = '" + Current.AddDays(8).Date.ToString() + "' OR periodDate = '" + Current.AddDays(9).Date.ToString() + "' );";
            // должны получить 4 записи
            command = new SQLiteCommand(sql, m_dbConnection);
            reader  = command.ExecuteReader();

            foreach (DbDataRecord record in reader)
            {
                DailyForecastsDataContext context = new DailyForecastsDataContext();
                context.description   = record["description"].ToString();
                context.hummidity     = record["hummidity"].ToString();
                context.periodDate    = DateTime.Parse(record["periodDate"].ToString());
                context.pressure      = record["pressure"].ToString();
                context.settingID     = int.Parse(record["settingID"].ToString());
                context.symbol        = record["symbol"].ToString();
                context.temperature   = record["temperature"].ToString();
                context.timeOfDay     = record["timeOfDay"].ToString();
                context.windDirection = record["windDirection"].ToString();
                context.windSpeed     = record["windSpeed"].ToString();
                f.dailyList.Add(context);
            }

            // получаем прогноз на 10 дней -> 10*2 = 20 записей
            sql     = "SELECT * FROM 'ten_days_forecasts' WHERE settingId = '" + sdc.ID + "' AND (periodDate = '" + Current.Date.ToString() + "' OR periodDate = '" + Current.AddDays(1).Date.ToString() + "' OR periodDate = '" + Current.AddDays(2).Date.ToString() + "' OR periodDate = '" + Current.AddDays(3).Date.ToString() + "' OR periodDate = '" + Current.AddDays(4).Date.ToString() + "' OR periodDate = '" + Current.AddDays(5).Date.ToString() + "' OR periodDate = '" + Current.AddDays(6).Date.ToString() + "' OR periodDate = '" + Current.AddDays(7).Date.ToString() + "' OR periodDate = '" + Current.AddDays(8).Date.ToString() + "' OR periodDate = '" + Current.AddDays(9).Date.ToString() + "' );";
            command = new SQLiteCommand(sql, m_dbConnection);
            reader  = command.ExecuteReader();
            foreach (DbDataRecord record in reader)
            {
                TenDaysForecastsDataContext context = new TenDaysForecastsDataContext();
                context.periodDate  = DateTime.Parse(record["periodDate"].ToString());
                context.settingID   = int.Parse(record["settingID"].ToString());
                context.symbol      = record["symbol"].ToString();
                context.temperature = record["temperature"].ToString();
                context.timeOfDay   = record["timeOfDay"].ToString();
                f.tenDaysList.Add(context);
            }

            // получаем почасовой прогноз на день - должны получить 9 записей
            sql     = "SELECT * FROM 'hourly_forecasts' WHERE settingId = '" + sdc.ID + "' AND periodDate = '" + Current.Date.ToString() + "';";
            command = new SQLiteCommand(sql, m_dbConnection);
            reader  = command.ExecuteReader();

            foreach (DbDataRecord record in reader)
            {
                HourlyForecastsDataContext context = new HourlyForecastsDataContext();
                context.description   = record["description"].ToString();
                context.hummidity     = record["hummidity"].ToString();
                context.periodDate    = Current;
                context.pressure      = record["pressure"].ToString();
                context.settingID     = int.Parse(record["settingID"].ToString());
                context.symbol        = record["symbol"].ToString();
                context.temperature   = record["temperature"].ToString();
                context.periodTime    = int.Parse(record["periodTime"].ToString());
                context.windDirection = record["windDirection"].ToString();
                context.windSpeed     = record["windSpeed"].ToString();
                f.hourlyList.Add(context);
            }

            return(f);
        }
Ejemplo n.º 8
0
        /// <summary>
        /// Сохраняет / обновляет прогнозы в трех таблицах
        /// </summary>
        /// <param name="forecast">объект класса Forecast</param>
        public void SaveForecast(Forecast forecast)
        {
            // получаем текущий SettingID
            SettingsDataContext set = GetSettings();

            // для каждого  public List<HourlyForecastsDataContext> hourlyList { get; set; } - проверяем и обновляем / переписываем
            #region
            for (int i = 0; i < forecast.hourlyList.Count; i++)
            {
                // проверить наличие такой строки в базе
                string           sql     = "SELECT * FROM 'hourly_forecasts' WHERE settingId = '" + set.ID + "' AND periodDate = '" + forecast.hourlyList[i].periodDate.Date.ToString() + "' AND periodTime = '" + forecast.hourlyList[i].periodTime + "';";
                SQLiteCommand    command = new SQLiteCommand(sql, m_dbConnection);
                SQLiteDataReader reader  = command.ExecuteReader();

                // считаем
                int count = 0;
                foreach (DbDataRecord record in reader)
                {
                    count++;
                }

                if (count > 0)
                {
                    // делаем update
                    sql     = @"UPDATE 'hourly_forecasts' SET
                            description = '" + forecast.hourlyList[i].description + "', temperature = '" + forecast.hourlyList[i].temperature + "', windSpeed = '" + forecast.hourlyList[i].windSpeed + "', windDirection = '" + forecast.hourlyList[i].windDirection + "', pressure = '" + forecast.hourlyList[i].pressure + "', hummidity = '" + forecast.hourlyList[i].hummidity + "', symbol ='" + forecast.hourlyList[i].symbol + "' WHERE settingId = '" + set.ID + "' AND periodDate = '" + forecast.hourlyList[i].periodDate.Date.ToString() + "' AND periodTime = '" + forecast.hourlyList[i].periodTime + "';";
                    command = new SQLiteCommand(sql, m_dbConnection);
                    command.ExecuteNonQuery();
                }
                else
                {
                    // сохраняем
                    sql     = @"INSERT INTO hourly_forecasts
                                (settingID, periodDate, periodTime, description, temperature, windSpeed, windDirection, pressure, hummidity, symbol)
                          VALUES ('" + set.ID + "', '" + forecast.hourlyList[i].periodDate.Date.ToString() + "', '" + forecast.hourlyList[i].periodTime + "', '" + forecast.hourlyList[i].description + "', '" + forecast.hourlyList[i].temperature + "', '" + forecast.hourlyList[i].windSpeed + "', '" + forecast.hourlyList[i].windDirection + "', '" + forecast.hourlyList[i].pressure + "', '" + forecast.hourlyList[i].hummidity + "', '" + forecast.hourlyList[i].symbol + "')";
                    command = new SQLiteCommand(sql, m_dbConnection);
                    command.ExecuteNonQuery();
                }
            }
            #endregion

            // для каждого public List<DailyForecastsDataContext> dailyList { get; set; } - проверяем и обновляем / переписываем
            #region
            for (int i = 0; i < forecast.dailyList.Count; i++)
            {
                // проверить наличие такой строки в базе
                string           sql     = "SELECT * FROM 'daily_forecasts' WHERE settingId = '" + set.ID + "' AND periodDate = '" + forecast.dailyList[i].periodDate.Date.ToString() + "' AND timeOfDay = '" + forecast.dailyList[i].timeOfDay + "';";
                SQLiteCommand    command = new SQLiteCommand(sql, m_dbConnection);
                SQLiteDataReader reader  = command.ExecuteReader();

                // считаем
                int count = 0;
                foreach (DbDataRecord record in reader)
                {
                    count++;
                }

                if (count > 0)
                {
                    // делаем update
                    sql     = @"UPDATE 'daily_forecasts' SET
                            description = '" + forecast.dailyList[i].description + "', temperature = '" + forecast.dailyList[i].temperature + "', windSpeed = '" + forecast.dailyList[i].windSpeed + "', windDirection = '" + forecast.dailyList[i].windDirection + "', pressure = '" + forecast.dailyList[i].pressure + "', hummidity = '" + forecast.dailyList[i].hummidity + "', symbol ='" + forecast.dailyList[i].symbol + "' WHERE settingId = '" + set.ID + "' AND periodDate = '" + forecast.dailyList[i].periodDate.Date.ToString() + "' AND timeOfDay = '" + forecast.dailyList[i].timeOfDay + "';";
                    command = new SQLiteCommand(sql, m_dbConnection);
                    command.ExecuteNonQuery();
                }
                else
                {
                    // сохраняем
                    sql     = @"INSERT INTO daily_forecasts
                                (settingID, periodDate, timeOfDay, description, temperature, windSpeed, windDirection, pressure, hummidity, symbol)
                          VALUES ('" + set.ID + "', '" + forecast.dailyList[i].periodDate.Date.ToString() + "', '" + forecast.dailyList[i].timeOfDay + "', '" + forecast.dailyList[i].description + "', '" + forecast.dailyList[i].temperature + "', '" + forecast.dailyList[i].windSpeed + "', '" + forecast.dailyList[i].windDirection + "', '" + forecast.dailyList[i].pressure + "', '" + forecast.dailyList[i].hummidity + "', '" + forecast.dailyList[i].symbol + "')";
                    command = new SQLiteCommand(sql, m_dbConnection);
                    command.ExecuteNonQuery();
                }
            }
            #endregion

            // для каждого public List<TenDaysForecastsDataContext> tenDaysList { get; set; } - проверяем и обновляем / переписываем
            #region
            for (int i = 0; i < forecast.tenDaysList.Count; i++)
            {
                // проверить наличие такой строки в базе
                string           sql     = "SELECT * FROM 'ten_days_forecasts' WHERE settingId = '" + set.ID + "' AND periodDate = '" + forecast.tenDaysList[i].periodDate.Date.ToString() + "' AND timeOfDay = '" + forecast.tenDaysList[i].timeOfDay + "';";
                SQLiteCommand    command = new SQLiteCommand(sql, m_dbConnection);
                SQLiteDataReader reader  = command.ExecuteReader();

                // считаем
                int count = 0;
                foreach (DbDataRecord record in reader)
                {
                    count++;
                }

                if (count > 0)
                {
                    // делаем update
                    sql     = @"UPDATE 'ten_days_forecasts' SET
                            temperature = '" + forecast.tenDaysList[i].temperature + "',  symbol ='" + forecast.tenDaysList[i].symbol + "' WHERE settingId = '" + set.ID + "' AND periodDate = '" + forecast.tenDaysList[i].periodDate.Date.ToString() + "' AND timeOfDay = '" + forecast.tenDaysList[i].timeOfDay + "';";
                    command = new SQLiteCommand(sql, m_dbConnection);
                    command.ExecuteNonQuery();
                }
                else
                {
                    // сохраняем
                    sql     = @"INSERT INTO ten_days_forecasts
                                (settingID, periodDate, timeOfDay, temperature, symbol)
                          VALUES ('" + set.ID + "', '" + forecast.tenDaysList[i].periodDate.Date.ToString() + "', '" + forecast.tenDaysList[i].timeOfDay + "', '" + forecast.tenDaysList[i].temperature + "', '" + forecast.tenDaysList[i].symbol + "')";
                    command = new SQLiteCommand(sql, m_dbConnection);
                    command.ExecuteNonQuery();
                }
            }
            #endregion
        }
Ejemplo n.º 9
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);
            }
        }