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