public static void Main()
DateTime fromDateTime = DateTime.Now.AddDays(5);
int OccursEveryWeekCount = 2;
bool DailyOccursOnce = true;
TimeSpan DailyOnceOccursAt = new TimeSpan(11, 30, 0);
DateTime StartDate = DateTime.Now;
DateTime? EndDate = null;
DateTime NextStartDateTime = FirstOfMonth(StartDate);
if (fromDateTime > NextStartDateTime)
NextStartDateTime = FirstOfMonth(fromDateTime);
Console.WriteLine("NextStartDateTime: " + NextStartDateTime);
internal static DateTime FirstOfMonth(DateTime input)
return new DateTime(input.Year, input.Month, 1);
internal static DateTime MonthlyWhichWhat(VisSchedule.Occurs_The which, VisSchedule.Occurs_The_Of what, DateTime dateTime)
dateTime = FirstOfMonth(dateTime);
internal static DateTime MonthlyOccurance(VisSchedule schedule, DateTime dateTime)
dateTime = FirstOfMonth(dateTime);
if (schedule.OccursTheOf_Type == VisSchedule.Occurs_The_Of.Monday)
else if (schedule.OccursTheOf_Type == VisSchedule.Occurs_The_Of.Tuesday)
else if (schedule.OccursTheOf_Type == VisSchedule.Occurs_The_Of.Wednesday)
else if (schedule.OccursTheOf_Type == VisSchedule.Occurs_The_Of.Thursday)
else if (schedule.OccursTheOf_Type == VisSchedule.Occurs_The_Of.Friday)
else if (schedule.OccursTheOf_Type == VisSchedule.Occurs_The_Of.Saturday)
else if (schedule.OccursTheOf_Type == VisSchedule.Occurs_The_Of.Sunday)
else if (schedule.OccursTheOf_Type == VisSchedule.Occurs_The_Of.day)
else if (schedule.OccursTheOf_Type == VisSchedule.Occurs_The_Of.Weekday)
else if (schedule.OccursTheOf_Type == VisSchedule.Occurs_The_Of.Weekend_Day)
public int Id { get; set; }
public string Name { get; set; }
public bool Enabled { get; set; }
public Schedule_Type ScheduleType { get; set; }
public DateTime? OneTimeOccurance { get; set; }
public Frequency ScheduleFrequency { get; set; }
public int RecursEveryDayCount { get; set; }
public int OccursEveryWeekCount { get; set; }
public bool Sunday { get; set; }
public bool Monday { get; set; }
public bool Tuesday { get; set; }
public bool Wednesday { get; set; }
public bool Thursday { get; set; }
public bool Friday { get; set; }
public bool Saturday { get; set; }
public bool OccursDay { get; set; }
public int OccursDayCount { get; set; }
public int Occurs_DayOfEveryMonth { get; set; }
public Occurs_The OccursThe_Type { get; set; }
public Occurs_The_Of OccursTheOf_Type { get; set; }
public int OccursTheOfEveryMonth { get; set; }
public bool DailyOccursOnce { get; set; }
public TimeSpan DailyOnceOccursAt { get; set; }
public int DailyOccursEveryCount { get; set; }
public Occurs_Every DailyOccursEvery_Type { get; set; }
public TimeSpan DailyOccursStartingAt { get; set; }
public TimeSpan DailyOccursEndingAt { get; set; }
public DateTime StartDate { get; set; }
public bool NoEndDate { get; set; }
public DateTime? EndDate { get; set; }
public enum Schedule_Type { Recurring = 0, OneTime = 1 }
public enum Frequency { Daily = 0, Weekly = 1, Monthly = 2 }
public enum Occurs_Every { Hours = 0, Minutes = 1, Seconds = 2 }
public enum Occurs_The { First = 0, Second = 1, Third = 2, Fourth = 3, Last = 4 }
public enum Occurs_The_Of { Monday = 0, Tuesday = 1, Wednesday = 2, Thursday = 3, Friday = 4, Saturday = 5, Sunday = 6, day = 7, Weekday = 8, Weekend_Day = 9 }