Esempio n. 1
0
 public int DeleteSmsPlan(Debrif item)
 {
     using (IDbConnection conn = new SQLiteConnection(this.db_.GetDefaultConnectionString()))
     {
         return(conn.ExecuteScalar <int>("delete from debrif where phone=@phone_ and WhenSms=@WhenSms_ and SmsMode=@SmsMode_;", new { phone_ = item.Phone, WhenSms_ = item.WhenSms, SmsMode_ = item.SmsMode }));
     }
 }
Esempio n. 2
0
        /// <summary>
        /// получить все запланированные отправки sms по всем телефонам
        /// </summary>
        /// <returns></returns>
        public List <Debrif> GetSmsPlanByPhone(string phone)
        {
            List <Debrif> plans = new List <Debrif>();

            if (String.IsNullOrEmpty(phone))
            {
                return(plans);
            }
            phone = phone.Trim();
            using (SQLiteConnection conn = CreateSqlConnection())
            {
                using (SQLiteCommand cmd = new SQLiteCommand("select phone, WhenSms, SmsMode from debrif where phone=@phone", conn))
                {
                    cmd.Parameters.AddWithValue("phone", phone);
                    conn.Open();
                    using (SQLiteDataReader reader = cmd.ExecuteReader())
                    {
                        while (reader.Read())
                        {
                            Debrif item = new Debrif()
                            {
                                Phone   = reader.GetString(0),
                                WhenSms = reader.GetDateTime(1),
                                SmsMode = reader.GetInt32(2)
                            };
                            plans.Add(item);
                        }
                    }
                    conn.Close();
                }
            }
            return(plans);
        }
Esempio n. 3
0
 public int AddSmsPlan(Debrif item)
 {
     using (IDbConnection conn = new SQLiteConnection(this.db_.GetDefaultConnectionString()))
     {
         return(conn.ExecuteScalar <int>("insert into debrif (phone,WhenSms, SmsMode) values(@phone,@WhenSms,@SmsMode);", item));
     }
 }
Esempio n. 4
0
        /// <summary>
        /// получить все запланированные отправки sms по всем телефонам
        /// </summary>
        /// <returns></returns>
        public List <Debrif> GetAllSmsPlan()
        {
            List <Debrif> plans = new List <Debrif>();

            using (SQLiteConnection conn = CreateSqlConnection())
            {
                using (SQLiteCommand cmd = new SQLiteCommand("select phone, WhenSms, SmsMode from debrif", conn))
                {
                    conn.Open();
                    using (SQLiteDataReader reader = cmd.ExecuteReader()){
                        while (reader.Read())
                        {
                            Debrif item = new Debrif()
                            {
                                Phone   = reader.GetString(0),
                                WhenSms = reader.GetDateTime(1),
                                SmsMode = reader.GetInt32(2)
                            };
                            plans.Add(item);
                        }
                    }
                    conn.Close();
                }
            }
            return(plans);
        }
Esempio n. 5
0
        /// <summary>
        /// метод - анализатор определяет попадает ли переданная дата DateTime в запланированный режим опроса, переданный в объекте Debrif
        /// </summary>
        /// <param name="current">текущее время, которое мы хотим проверить</param>
        /// <param name="smsPlan">объект проверки</param>
        /// <returns>Возвращает true если переданная дата попадает в период опроса, false - в противном случае</returns>
        public static bool CheckSMSDate(DateTime current, Debrif smsPlan)
        {
            if (smsPlan == null || current == null)
            {
                return(false);
            }
            bool DA = false;

            // проверяем тип запланированного опроса
            switch (smsPlan.SmsMode)
            {
            // в типе опроса указано, что нужно опросить только конкретно в дату WhenSms
            case 0:
            {
                // сравниваю точно даты без времени и отдельно часы между собой - если совпадают, то дата соответствует
                DA = current.Date == smsPlan.WhenSms.Date && current.Hour == smsPlan.WhenSms.Hour;
            } break;

            // в типе опроса указано, что нужно опрашивать каждый месяц в это число WhenSms и точный час (без минут)
            case 1:
            {
                // сравниваю точно числа дат и отдельно часы между собой - если совпадают, то дата соответствует
                // предусмотреть что может быть число 30,31 в плане оно будет соответствовать 28 (29) февраля тоже
                // сравниваю точно числа
                DA = current.Day == smsPlan.WhenSms.Day && current.Hour == smsPlan.WhenSms.Hour;
                // дополнительно сравниваю конец месяца
                //DA = DA || (current.Day == DateTime.DaysInMonth(current.Year, current.Month) && current.Day > DateTime.DaysInMonth(smsPlan.WhenSms.Year, smsPlan.WhenSms.Month) && DateTime.DaysInMonth(smsPlan.WhenSms.Year, smsPlan.WhenSms.Month) == smsPlan.WhenSms.Day && current.Hour == smsPlan.WhenSms.Hour);
                DA = DA || (current.Day == DateTime.DaysInMonth(current.Year, current.Month) && current.Day < smsPlan.WhenSms.Day && current.Hour == smsPlan.WhenSms.Hour);
            } break;

            // в типе опроса указано, что нужно опрашивать каждый день в это время WhenSms (без минут)
            case 2:
            {
                // сравниваю точно часы двух дат между собой - если совпадают, то даты соответствуют
                DA = current.Hour == smsPlan.WhenSms.Hour;
            } break;

            default: DA = false; break;
            }
            return(DA);
        }