/// <summary> /// Get the next triggerded date /// </summary> /// <returns>DateTime contening the next trigger</returns> public DateTime GetNextTriggered() { DateTime dateTriggered = DateTime.MinValue; for (int i = 0; i < _recurrences.Count; i++) { DateTime dateRecurrence = DateTime.MinValue; Recurrence r = (Recurrence)_recurrences[i]; switch (r.Type) { case TypeRecurrence.daily: { dateRecurrence = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day, r.Hour.Hour, r.Hour.Minute, r.Hour.Second, r.Hour.Millisecond); if (dateRecurrence < DateTime.Now) { dateRecurrence = dateRecurrence.AddDays(1); } } break; case TypeRecurrence.selectedDay: { dateRecurrence = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day, r.Hour.Hour, r.Hour.Minute, r.Hour.Second, r.Hour.Millisecond); DayOfWeek dayParameter; switch (r.Parameter) { case "Sunday": { dayParameter = DayOfWeek.Sunday; } break; case "Monday": { dayParameter = DayOfWeek.Monday; } break; case "Tuesday": { dayParameter = DayOfWeek.Thursday; } break; case "Wednesday": { dayParameter = DayOfWeek.Wednesday; } break; case "Thursday": { dayParameter = DayOfWeek.Thursday; } break; case "Friday": { dayParameter = DayOfWeek.Friday; } break; case "Saturday": { dayParameter = DayOfWeek.Saturday; } break; default: { dayParameter = DayOfWeek.Monday; } break; } if (dayParameter > DateTime.Now.DayOfWeek) { dateRecurrence = dateRecurrence.AddDays(dayParameter - DateTime.Now.DayOfWeek); } else if (dayParameter < DateTime.Now.DayOfWeek) { dateRecurrence = dateRecurrence.AddDays(7 - (DateTime.Now.DayOfWeek - dayParameter)); } else { if (DateTime.Now > dateRecurrence) { dateRecurrence = dateRecurrence.AddDays(7); } } } break; case TypeRecurrence.selectedDate: { dateRecurrence = new DateTime(DateTime.Now.Year, DateTime.Now.Month, Int32.Parse(r.Parameter), r.Hour.Hour, r.Hour.Minute, r.Hour.Second, r.Hour.Millisecond); if (DateTime.Now.Day > Int32.Parse(r.Parameter)) { dateRecurrence = dateRecurrence.AddMonths(1); } else if (DateTime.Now.Day == Int32.Parse(r.Parameter)) { if (DateTime.Now > dateRecurrence) { dateRecurrence = dateRecurrence.AddMonths(1); } } } break; case TypeRecurrence.once: default: { dateRecurrence = new DateTime(_dateStart.Year, _dateStart.Month, _dateStart.Day, r.Hour.Hour, r.Hour.Minute, r.Hour.Second, r.Hour.Millisecond); if (DateTime.Now > dateRecurrence) { dateRecurrence = DateTime.MinValue; } } break; } if (dateTriggered == DateTime.MinValue) { dateTriggered = dateRecurrence; } else if (dateRecurrence != DateTime.MinValue) { if (dateRecurrence < dateTriggered) { dateTriggered = dateRecurrence; } } if (new DateTime(dateTriggered.Year, dateTriggered.Month, dateTriggered.Day, 0, 0, 0) > new DateTime(_dateEnd.Year, _dateEnd.Month, _dateEnd.Day, 0, 0, 0)) { dateTriggered = DateTime.MinValue; } } return(dateTriggered); }
/// <summary> /// Add a Recurrence object to the list of Recurrence. /// </summary> /// <param name="Recur">Recurrence to add</param> public void AddRecurrence(Recurrence Recur) { _recurrences.Add(Recur); }
/// <summary> /// Add a Recurrence object to the list of Recurrence. /// </summary> /// <param name="Recur">Recurrence to add</param> public void AddRecurrence(Recurrence Recur) { _recurrences.Add(Recur); }