internal static void Configure(this Registry registry, ISyncTask task, RecurrencePatternConfiguration configuration) { switch (configuration) { case DailyRecurrencePatternConfiguration dailyConfiguration: var dailySchedule = registry.Schedule(() => task.Execute()); Schedule(dailySchedule, dailyConfiguration); break; case MonthlyNamedRecurrencePatternConfiguration monthlyNamedConfiguration: var monthlyNamedSchedule = registry.Schedule(() => task.Execute()); Schedule(monthlyNamedSchedule, monthlyNamedConfiguration); break; case MonthlyRecurrencePatternConfiguration monthlyConfiguration: var monthlySchedule = registry.Schedule(() => task.Execute()); Schedule(monthlySchedule, monthlyConfiguration); break; case TimePartRecurrencePatternConfiguration timePartConfiguration: var timePartSchedule = registry.Schedule(() => task.Execute()); Schedule(timePartSchedule, timePartConfiguration); break; case WeekendRecurrencePatternConfiguration weekendConfiguration: var saturdayWeekendDaySchedule = registry.Schedule(() => task.Execute()); var sundayWeekendDaySchedule = registry.Schedule(() => task.Execute()); Schedule(saturdayWeekendDaySchedule, sundayWeekendDaySchedule, weekendConfiguration); break; case WeeklyRecurrencePatternConfiguration weeklyConfiguration: var weeklySchedule = registry.Schedule(() => task.Execute()); Schedule(weeklySchedule, weeklyConfiguration); break; case WorkdayRecurrencePatternConfiguration workdayConfiguration: var workdaySchedule = registry.Schedule(() => task.Execute()); Schedule(workdaySchedule, workdayConfiguration); break; } }
/// <summary> /// Schedule task by type /// </summary> /// <param name="config"></param> public void ScheduleTask <TTask>(RecurrencePatternConfiguration config) where TTask : ISyncTask { var instance = Activator.CreateInstance <TTask>(); ScheduleTask(instance, config); }
/// <summary> /// Schedule task instance /// </summary> /// <param name="task"></param> /// <param name="config"></param> public void ScheduleTask(ISyncTask task, RecurrencePatternConfiguration config) { _registry.Configure(task, config); }