Esempio n. 1
0
 public static void ScheduleWeeklyJob <TJob>(this IScheduler scheduler, DayOfWeek weekDay, int hour, int minute) where TJob : IJob
 {
     ScheduleJob <TJob>(
         scheduler,
         trigger => trigger.WithSchedule(CronScheduleBuilder.WeeklyOnDayAndHourAndMinute(weekDay, hour, minute)).Build()
         );
 }
Esempio n. 2
0
        private static void RegisterHcMaximumAllowedCheck()
        {
            var jobKey = new JobKey("HcMaximumAllowedCheckJob");
            var job    = sched.GetJobDetail(jobKey);

            if (job == null)
            {
                // define the job and tie it to our HelloJob class
                job = JobBuilder.Create <HcMaximumAllowedCheckJob>()
                      .WithIdentity(jobKey)
                      .Build();


                var triggerKey = new TriggerKey("HcMaximumAllowedCheckJob");

                // Trigger the job to run now, and daily at midnight
                ITrigger trigger = TriggerBuilder.Create()
                                   .WithIdentity(triggerKey)
                                   .StartNow()
                                   .WithSchedule(CronScheduleBuilder.WeeklyOnDayAndHourAndMinute(DayOfWeek.Monday, 8, 0).WithMisfireHandlingInstructionFireAndProceed())
                                   .Build();

                sched.ScheduleJob(job, trigger);
            }
        }
        public IActionResult SendEmailBySelectWeekDayTime(SendEmailBySelectWeekDayTimeDto model)
        {
            try
            {
                if (!ModelState.IsValid)
                {
                    feachEnums();
                    return(View());
                }

                var cron     = CronScheduleBuilder.WeeklyOnDayAndHourAndMinute(model.DayOfWeek, model.Time.Hour, model.Time.Minute).Build() as CronTriggerImpl;
                var lastChar = cron.CronExpressionString[cron.CronExpressionString.Length - 1];// get dayofweek
                ConvertWeekDayToWeekStrName(cron, lastChar);
                RecurringJob.AddOrUpdate("SendEmailBySelectWeekDayTime", () => _hanfireJobs.AccountingAffiliateAmountSell(), cron.CronExpressionString, TimeZoneInfo.Local);


                feachEnums();
                ViewBag.SuccessMessage = SuccessMessage;

                return(View("Index"));
            }
            catch (Exception ex)
            {
                ViewBag.ErrorMessage = ErrorMessage + ex.Message;
                return(View("Index"));
            }
        }
        public IActionResult BackUpFromDatabase(BackUpDatabaseDto model)
        {
            try
            {
                if (!ModelState.IsValid)
                {
                    feachEnums();
                    return(View());
                }

                var cron     = CronScheduleBuilder.WeeklyOnDayAndHourAndMinute(model.DayOfWeek, model.Time.Hour, model.Time.Minute).Build() as CronTriggerImpl;
                var lastChar = cron.CronExpressionString[cron.CronExpressionString.Length - 1];// get dayofweek
                ConvertWeekDayToWeekStrName(cron, lastChar);
                RecurringJob.AddOrUpdate("BackUpFromDatabase" + model.DatabaseName.ToString(), () => _hanfireJobs.BackupFromDataBase(model.DatabaseName), cron.CronExpressionString, TimeZoneInfo.Local);


                feachEnums();
                ViewBag.SuccessMessage = SuccessMessage;

                return(View("Index"));
            }
            catch (Exception ex)
            {
                ViewBag.ErrorMessage = ErrorMessage + ex.Message;
                return(View("Index"));
            }
        }
Esempio n. 5
0
        private TriggerBuilder AddWeekly(TriggerBuilder triggerBuilder, ScheduleModel scheduler)
        {
            var startTime = scheduler.StarTime;

            return(triggerBuilder.WithSchedule(
                       CronScheduleBuilder.WeeklyOnDayAndHourAndMinute(startTime.DayOfWeek, startTime.Hour, startTime.Minute)));
        }
Esempio n. 6
0
        private void CreateDefaultSettingsPage(string baseUrl)
        {
            var defaultSettings = new PlexRequestSettings
            {
                RequireTvShowApproval = true,
                RequireMovieApproval  = true,
                SearchForMovies       = true,
                SearchForTvShows      = true,
                BaseUrl             = baseUrl ?? string.Empty,
                CollectAnalyticData = true,
            };
            var s = new SettingsServiceV2 <PlexRequestSettings>(new SettingsJsonRepository(new DbConfiguration(new SqliteFactory()), new MemoryCacheProvider()));

            s.SaveSettings(defaultSettings);


            var cron      = (Quartz.Impl.Triggers.CronTriggerImpl)CronScheduleBuilder.WeeklyOnDayAndHourAndMinute(DayOfWeek.Friday, 7, 0).Build();
            var scheduled = new ScheduledJobsSettings
            {
                PlexAvailabilityChecker  = 60,
                SickRageCacher           = 60,
                SonarrCacher             = 60,
                CouchPotatoCacher        = 60,
                StoreBackup              = 24,
                StoreCleanup             = 24,
                UserRequestLimitResetter = 12,
                PlexEpisodeCacher        = 12,
                RecentlyAddedCron        = cron.CronExpressionString, // Weekly CRON at 7 am on Mondays
            };

            var scheduledSettings = new SettingsServiceV2 <ScheduledJobsSettings>(new SettingsJsonRepository(new DbConfiguration(new SqliteFactory()), new MemoryCacheProvider()));

            scheduledSettings.SaveSettings(scheduled);
        }
Esempio n. 7
0
        private void CreateDisconnectFixJob()
        {
            var schedule = CronScheduleBuilder
                           .WeeklyOnDayAndHourAndMinute(
                this.disconnectWeeklyTime.DayOfWeek.ToDayOfWeek(),
                this.disconnectWeeklyTime.Time.Hour,
                this.disconnectWeeklyTime.Time.Minute)
                           .InTimeZone(TimeZoneInfo.Utc)
                           .WithMisfireHandlingInstructionFireAndProceed();

            var jobKey  = new JobKey("session-disconnect", "service");
            var trigger = TriggerBuilder
                          .Create()
                          .WithIdentity(jobKey.Name, jobKey.Group)
                          .WithSchedule(schedule)
                          .Build();

            var createJob = new CreateJob(
                this.Endpoint,
                new DisconnectSession(this.NewGuid(), this.TimeNow()),
                jobKey,
                trigger,
                this.NewGuid(),
                this.TimeNow());

            this.Send(createJob, new Address(nameof(Scheduler)));
            this.Logger.LogInformation(
                LogId.Component,
                $"Created {nameof(DisconnectSession)} for " +
                $"{this.disconnectWeeklyTime.DayOfWeek.ToDayOfWeek()}s " +
                $"{this.disconnectWeeklyTime.Time.Hour:D2}:" +
                $"{this.disconnectWeeklyTime.Time.Minute:D2} UTC.");
        }
Esempio n. 8
0
        private void ConfigureScheduler()
        {
            var schedFact = new StdSchedulerFactory();

            sched = schedFact.GetScheduler().Result;
            var timeZoneInfo = TimeZoneInfo.FindSystemTimeZoneById("Israel Standard Time");

            var weeklyJob = new JobDetailImpl("WeeklyJob", null, typeof(WeeklyJob));
            var weeklyCronScheduleBuilder = CronScheduleBuilder.WeeklyOnDayAndHourAndMinute(DayOfWeek.Sunday, 0, 0)
                                            .InTimeZone(timeZoneInfo);
            var weeklyTrigger = TriggerBuilder.Create()
                                .StartNow()
                                .WithSchedule(weeklyCronScheduleBuilder)
                                .Build();

            sched.ScheduleJob(weeklyJob, weeklyTrigger);

            var monthlyJob = new JobDetailImpl("MonthlyJob", null, typeof(MonthlyJob));
            var monthlyCronScheduleBuilder = CronScheduleBuilder.MonthlyOnDayAndHourAndMinute(1, 0, 0)
                                             .InTimeZone(timeZoneInfo);
            var monthlyTrigger = TriggerBuilder.Create()
                                 .StartNow()
                                 .WithSchedule(monthlyCronScheduleBuilder)
                                 .Build();

            sched.ScheduleJob(monthlyJob, monthlyTrigger);
            sched.Start();
        }
Esempio n. 9
0
        private void btnTest1_Click(object sender, EventArgs e)
        {
            // construct a scheduler factory
            ISchedulerFactory schedFact = new StdSchedulerFactory();
            // get a scheduler
            IScheduler sched = schedFact.GetScheduler();

            IJobDetail myJob = JobBuilder.Create <HelloJob>()
                               .WithIdentity("myJob", "group1")
                               .Build();

            //Build a trigger that will fire every other minute, between 8am and 5pm, every day:
            ICronTrigger trigger = (ICronTrigger)TriggerBuilder.Create()
                                   .WithIdentity("trigger3", "group1")
                                   .WithCronSchedule("0 0/2 8-17 * * ?")
                                   .ForJob("myJob", "group1")
                                   .Build();

            //Build a trigger that will fire daily at 10:42 am:
            // we use CronScheduleBuilder's static helper methods here
            trigger = (ICronTrigger)TriggerBuilder.Create()
                      .WithIdentity("trigger3", "group1")
                      .WithSchedule(CronScheduleBuilder.DailyAtHourAndMinute(10, 42))
                      .ForJob(myJob)
                      .Build();

            trigger = (ICronTrigger)TriggerBuilder.Create()
                      .WithIdentity("trigger3", "group1")
                      .WithCronSchedule("0 42 10 * * ?")
                      .ForJob("myJob", "group1")
                      .Build();


            //Build a trigger that will fire on Wednesdays at 10:42 am, in a TimeZone other than the system's default:
            trigger = (ICronTrigger)TriggerBuilder.Create()
                      .WithIdentity("trigger3", "group1")
                      .WithSchedule(CronScheduleBuilder
                                    .WeeklyOnDayAndHourAndMinute(DayOfWeek.Wednesday, 10, 42)
                                    .InTimeZone(TimeZoneInfo.FindSystemTimeZoneById("Central America Standard Time")))
                      .ForJob(myJob)
                      .Build();

            trigger = (ICronTrigger)TriggerBuilder.Create()
                      .WithIdentity("trigger3", "group1")
                      .WithCronSchedule("0 42 10 ? * WED", x => x
                                        .InTimeZone(TimeZoneInfo.FindSystemTimeZoneById("Central America Standard Time")))
                      .ForJob(myJob)
                      .Build();


            //   When building CronTriggers, you specify the misfire instruction as part of the cron schedule (via WithCronSchedule extension method):失败后某人指令
            trigger = (ICronTrigger)TriggerBuilder.Create()
                      .WithIdentity("trigger3", "group1")
                      .WithCronSchedule("0 0/2 8-17 * * ?", x => x
                                        .WithMisfireHandlingInstructionFireAndProceed())
                      .ForJob("myJob", "group1")
                      .Build();
            sched.ScheduleJob(myJob, trigger);
        }
Esempio n. 10
0
        /// <summary>
        /// Runs evening notifier.
        /// </summary>
        public static async Task RunNotifier()
        {
            await RefreshNotifiedToday();
            await ResetWeekType();

            // Grab the Scheduler instance from the Factory
            NameValueCollection props = new NameValueCollection
            {
                { "quartz.serializer.type", "binary" }
            };
            StdSchedulerFactory factory   = new StdSchedulerFactory(props);
            IScheduler          scheduler = await factory.GetScheduler();

            // and start it off
            await scheduler.Start();

            IJobDetail eveningNotify = JobBuilder.Create <EveningNotify>()
                                       .WithIdentity("evening")
                                       .Build();

            // Trigger the job to run now, and then repeat every day at the specific time
            ITrigger eveningTrigger = TriggerBuilder.Create()
                                      .WithIdentity("evening")
                                      .WithSchedule(CronScheduleBuilder.DailyAtHourAndMinute(21, 00))
                                      .ForJob(eveningNotify)
                                      .Build();

            await scheduler.ScheduleJob(eveningNotify, eveningTrigger);

            // Reset notified
            IJobDetail resetNotified = JobBuilder.Create <ResetNotified>()
                                       .WithIdentity("resetNotified")
                                       .Build();

            ITrigger resetNotifiedTrigger = TriggerBuilder.Create()
                                            .WithIdentity("resetNotified")
                                            .WithSchedule(CronScheduleBuilder.DailyAtHourAndMinute(07, 01))
                                            .ForJob(resetNotified)
                                            .Build();

            await scheduler.ScheduleJob(resetNotified, resetNotifiedTrigger);

            // Reset week type
            IJobDetail resetWeekType = JobBuilder.Create <ResetWeekType>()
                                       .WithIdentity("resetWeekType")
                                       .Build();

            ITrigger resetWeekTypeTrigger = TriggerBuilder.Create()
                                            .WithIdentity("resetWeekType")
                                            .WithSchedule(CronScheduleBuilder.WeeklyOnDayAndHourAndMinute(DayOfWeek.Monday, 7, 0))
                                            .ForJob(resetWeekType)
                                            .Build();

            await scheduler.ScheduleJob(resetWeekType, resetWeekTypeTrigger);

            //TODO: Impl load from API
            var lessons = new Dictionary <(int, int), string>
            {
                { (7, 44), "first" },
Esempio n. 11
0
        public void Add(Task task)
        {
            if (task.NotificationTime >= DateTime.Now)
            {
                switch (task.isDWMf)
                {
                case 0:
                {
                    IJobDetail taskToNotify = JobBuilder.Create <Notification>().WithIdentity(task.NotificationTime.ToString()).Build();
                    taskToNotify.JobDataMap["Task"] = task;
                    ITrigger trigger = TriggerBuilder.Create().StartAt(task.NotificationTime).Build();
                    scheduler.ScheduleJob(taskToNotify, trigger);
                    break;
                }

                case 1:
                {
                    IJobDetail taskToNotify = JobBuilder.Create <Notification>().WithIdentity(task.NotificationTime.ToString()).Build();
                    taskToNotify.JobDataMap["Task"] = task;
                    ITrigger trigger = TriggerBuilder.Create()
                                       .WithDailyTimeIntervalSchedule
                                           (s =>
                                           s.WithIntervalInHours(24)
                                           .OnEveryDay()
                                           .StartingDailyAt(TimeOfDay.HourAndMinuteOfDay(task.StartingTime.Hours, task.StartingTime.Minutes)))
                                       .Build();
                    scheduler.ScheduleJob(taskToNotify, trigger);
                    break;
                }

                case 2:
                {
                    IJobDetail taskToNotify = JobBuilder.Create <Notification>().WithIdentity(task.NotificationTime.ToString()).Build();
                    taskToNotify.JobDataMap["Task"] = task;
                    ITrigger trigger = TriggerBuilder.Create()
                                       .WithSchedule(CronScheduleBuilder
                                                     .WeeklyOnDayAndHourAndMinute(task.StartingDate.DayOfWeek, task.StartingTime.Hours, task.StartingTime.Minutes))
                                       .Build();
                    scheduler.ScheduleJob(taskToNotify, trigger);
                    break;
                }

                default:
                {
                    IJobDetail taskToNotify = JobBuilder.Create <Notification>().WithIdentity(task.NotificationTime.ToString()).Build();
                    taskToNotify.JobDataMap["Task"] = task;
                    string   asd     = "0 " + task.StartingTime.Minutes + " " + task.StartingTime.Hours + " " + task.StartingDate.Day + " * ?";
                    ITrigger trigger = TriggerBuilder.Create()
                                       .WithCronSchedule("0 " + task.StartingTime.Minutes + " " + task.StartingTime.Hours + " " + task.StartingDate.Day + " * ?")
                                       .Build();
                    scheduler.ScheduleJob(taskToNotify, trigger);
                    break;
                }
                }
            }
        }
Esempio n. 12
0
        private void DefinirAgendamentoExecucao()
        {
            RegistroLog.RegistarLogInfo(Mensagem.SistemaAgendamentoInicio);

            ISchedulerFactory schedFact = new StdSchedulerFactory();
            ITrigger          trigger;

            this.scheduler = schedFact.GetScheduler();
            //this.scheduler.Start();

            IJobDetail job = JobBuilder.Create <FrmArquivoDataSUS>()
                             .WithIdentity("JobAplicacao", "groupAplicacao")
                             .Build();


            if (this.gbxAcadaMinuto.Enabled)
            {
                trigger = TriggerBuilder.Create()
                          .StartNow()
                          .WithSchedule(SimpleScheduleBuilder.RepeatMinutelyForever(Convert.ToInt32(this.nudCadaMinuto.Value.ToString())))
                          .Build();
            }
            else
            {
                CronScheduleBuilder cronScheduleBuilder;

                Enumeradores.DiaDaSemana dia = Enumeradores.ConverterObject2DiaDaSemana(this.ddlDiaAgendamento.SelectedValue);

                if (dia == Enumeradores.DiaDaSemana.AllDays)
                {
                    cronScheduleBuilder = CronScheduleBuilder.DailyAtHourAndMinute(Convert.ToInt32(this.nudHora.Value), Convert.ToInt32(this.nudMinuto.Value));
                }
                else
                {
                    cronScheduleBuilder = CronScheduleBuilder.WeeklyOnDayAndHourAndMinute((DayOfWeek)dia, Convert.ToInt32(this.nudHora.Value), Convert.ToInt32(this.nudMinuto.Value));
                }

                trigger = TriggerBuilder.Create()
                          .StartNow()
                          .WithSchedule(cronScheduleBuilder)
                          .Build();
            }

            this.scheduler.ScheduleJob(job, trigger);
            this.scheduler.Start();

            this.lblUltimaExecucao.Text  = "--/--/---- --:--:--";
            this.lblProximaExecucao.Text = trigger.GetNextFireTimeUtc().Value.LocalDateTime.ToString(Constantes.FormatoDataHora);

            RegistroLog.RegistarLogInfo(Mensagem.SistemaAgendamentoFim);
        }
        private void DefinirAgendamentoExecucao()
        {
            RegistroLog.RegistarLogInfo(Mensagem.SistemaAgendamentoInicio);

            ISchedulerFactory schedFact = new StdSchedulerFactory();
            ITrigger          trigger;

            this.scheduler = schedFact.GetScheduler();

            IJobDetail job = JobBuilder.Create <ServicoArquivosDataSUS>()
                             .WithIdentity("JobServico", "groupServico")
                             .Build();


            if (this.executarAcadaMinuto > 0)
            {
                trigger = TriggerBuilder.Create()
                          .StartNow()
                          .WithSchedule(SimpleScheduleBuilder.RepeatMinutelyForever(this.executarAcadaMinuto))
                          .Build();
            }
            else
            {
                CronScheduleBuilder cronScheduleBuilder;

                Enumeradores.DiaDaSemana dia = Enumeradores.ConverterObject2DiaDaSemana(this.diaAgendamento);

                if (dia == Enumeradores.DiaDaSemana.AllDays)
                {
                    cronScheduleBuilder = CronScheduleBuilder.DailyAtHourAndMinute(this.hora, this.minuto);
                }
                else
                {
                    cronScheduleBuilder = CronScheduleBuilder.WeeklyOnDayAndHourAndMinute((DayOfWeek)dia, this.hora, this.minuto);
                }

                trigger = TriggerBuilder.Create()
                          .StartNow()
                          .WithSchedule(cronScheduleBuilder)
                          .Build();
            }

            this.scheduler.ScheduleJob(job, trigger);
            this.scheduler.Start();

            RegistroLog.RegistarLogInfo(Mensagem.ServicoProximaExecucao + " - " + trigger.GetNextFireTimeUtc().Value.LocalDateTime.ToString(Constantes.FormatoDataHora));

            RegistroLog.RegistarLogInfo(Mensagem.SistemaAgendamentoFim);
        }
Esempio n. 14
0
        private void UpdateScheduledSettings(ScheduledJobsSettings settings)
        {
            settings.PlexAvailabilityChecker  = 60;
            settings.SickRageCacher           = 60;
            settings.SonarrCacher             = 60;
            settings.CouchPotatoCacher        = 60;
            settings.StoreBackup              = 24;
            settings.StoreCleanup             = 24;
            settings.UserRequestLimitResetter = 12;
            settings.PlexEpisodeCacher        = 12;

            var cron = (Quartz.Impl.Triggers.CronTriggerImpl)CronScheduleBuilder.WeeklyOnDayAndHourAndMinute(DayOfWeek.Friday, 7, 0).Build();

            settings.RecentlyAddedCron = cron.CronExpressionString; // Weekly CRON at 7 am on Mondays
        }
Esempio n. 15
0
 // Build a trigger that will fire on Wednesdays at 10:42 am, in a TimeZone other than the system’s default:
 public void BuildTrigger3()
 {
     // we use CronScheduleBuilder's static helper methods here
     JobKey   myJobKey = JobKey.Create("JobKey-name", "JobKey-group");
     ITrigger trigger  = TriggerBuilder.Create()
                         .WithIdentity("trigger3", "group1")
                         .WithSchedule(CronScheduleBuilder.WeeklyOnDayAndHourAndMinute(DayOfWeek.Wednesday, 10, 42)
                                       .InTimeZone(TimeZoneInfo.FindSystemTimeZoneById("Central America Standard Time")))
                         .ForJob(myJobKey)
                         .Build();
     // or -
     ITrigger trigger2 = TriggerBuilder.Create()
                         .WithIdentity("trigger3", "group1")
                         .WithCronSchedule("0 42 10 ? * WED", x => x.InTimeZone(TimeZoneInfo.FindSystemTimeZoneById("Central America Standard Time")))
                         .ForJob(myJobKey)
                         .Build();
 }
Esempio n. 16
0
        /// <summary>
        /// Adds a new weekly job to the scheduler
        /// </summary>
        /// <typeparam name="T">Job is generated</typeparam>
        /// <param name="name">Name of the job</param>
        /// <param name="group">Group of jobs</param>
        public async void AddWeeklyJob <T>(string name, string group)
            where T : IJob
        {
            // Create a job
            IJobDetail job = JobBuilder.Create <T>()
                             .WithIdentity(name, group)
                             .Build();

            // Create triggers
            ITrigger jobTrigger = TriggerBuilder.Create()
                                  .WithIdentity(name + "Trigger", group)
                                  .StartNow()                                                                            // Start now
                                  .WithSchedule(CronScheduleBuilder.WeeklyOnDayAndHourAndMinute(DayOfWeek.Monday, 0, 0)) // With repetition every week on Monday at 12:00 AM
                                  .Build();

            // Attach job
            await Scheduler.ScheduleJob(job, jobTrigger);
        }
    public static void StartJob <TJob>(IScheduler scheduler, string cron)
        where TJob : IJob
    {
        var jobName = typeof(TJob).FullName;

        var job = JobBuilder.Create <TJob>()
                  .WithIdentity(jobName)
                  .Build();

        var trigger = TriggerBuilder.Create()
                      .WithSchedule(CronScheduleBuilder.WeeklyOnDayAndHourAndMinute(DayOfWeek.Sunday, 06, 30)
                                    .WithMisfireHandlingInstructionFireAndProceed()
                                    // .InTimeZone(TimeZoneInfo.FindSystemTimeZoneById("Africa/Lagos")))
                                    .InTimeZone(TimeZoneInfo.FindSystemTimeZoneById("W. Central Africa Standard Time")))
                      .ForJob(job)
                      .Build();

        scheduler.ScheduleJob(job, trigger);
    }
Esempio n. 18
0
        private static async Task RunProgramRunExample()
        {
            try
            {
                // Grab the Scheduler instance from the Factory
                NameValueCollection props = new NameValueCollection
                {
                    { "quartz.serializer.type", "binary" }
                };
                StdSchedulerFactory factory   = new StdSchedulerFactory(props);
                IScheduler          scheduler = await factory.GetScheduler();

                // and start it off
                await scheduler.Start();

                // define the job and tie it to our HelloJob class
                IJobDetail job = JobBuilder.Create <UpdateJob>()
                                 .WithIdentity("job1", "group1")
                                 .Build();
                IJobDetail job2 = JobBuilder.Create <ReviewJob>()
                                  .WithIdentity("job2", "group2")
                                  .Build();

                // Trigger the job to run now, and then repeat every 10 seconds
                ITrigger trigger = TriggerBuilder.Create()
                                   .WithIdentity("trigger1", "group1")
                                   .WithSchedule(CronScheduleBuilder.DailyAtHourAndMinute(3, 0))
                                   .Build();
                ITrigger trigger2 = TriggerBuilder.Create()
                                    .WithIdentity("trigger2", "group2")
                                    .WithSchedule(CronScheduleBuilder.WeeklyOnDayAndHourAndMinute(DayOfWeek.Monday, 3, 0))
                                    .Build();

                // Tell quartz to schedule the job using our trigger
                await scheduler.ScheduleJob(job, trigger);

                await scheduler.ScheduleJob(job2, trigger2);
            }
            catch (SchedulerException se)
            {
                Console.WriteLine(se);
            }
        }
Esempio n. 19
0
        public async Task ScheduleWeeklyUpdateAsync(IScheduler scheduler)
        {
            JobDataMap dataMap = new JobDataMap
            {
                { "ServiceManager", this.ServiceManager },
                { "DiscordClient", this.DiscordClient },
            };

            IJobDetail job = JobBuilder.Create <WeeklyUpdateJob>()
                             .WithIdentity("Weekly Update", "Energize")
                             .SetJobData(dataMap)
                             .Build();

            ITrigger trigger = TriggerBuilder.Create()
                               .WithIdentity("Weekly Trigger", "Energize")
                               .WithSchedule(CronScheduleBuilder.WeeklyOnDayAndHourAndMinute(DayOfWeek.Monday, 5, 0))
                               .Build();

            await scheduler.ScheduleJob(job, trigger);
        }
    public static void Start()
    {
        IScheduler scheduler = StdSchedulerFactory.GetDefaultScheduler();

        scheduler.Start();
        IJobDetail job     = JobBuilder.Create <EmailJob>().Build();
        ITrigger   trigger = TriggerBuilder.Create()
                             .WithIdentity("trigger1", "group1")
                             //.StartAt(new DateTime(2015, 12, 21, 17, 19, 0, 0))
                             .StartNow()
                             .WithSchedule(CronScheduleBuilder
                                           .WeeklyOnDayAndHourAndMinute(DayOfWeek.Monday, 10, 00)
                                                                                                                 //.WithMisfireHandlingInstructionDoNothing() //Do not fire if the firing is missed
                                           .WithMisfireHandlingInstructionFireAndProceed()                       //MISFIRE_INSTRUCTION_FIRE_NOW
                                           .InTimeZone(TimeZoneInfo.FindSystemTimeZoneById("GTB Standard Time")) //(GMT+02:00)
                                           )
                             .Build();

        scheduler.ScheduleJob(job, trigger);
    }
Esempio n. 21
0
        private async void ScheduleJobs()
        {
            _scheduler.JobFactory = new RfmJobFactory(this);

            var weeklyJob = JobBuilder.Create <WeeklySummaryJob>()
                            .WithIdentity("weeklyJob", "weeklyGroup")
                            .Build();

            // TODO: Clean this shit up, function is getting too long
            var weeklyTriggerVals = _config["RingFit:Schedule:SundayWeeklyStatsList"].Split(':')
                                    .Select(x => Convert.ToUInt16(x)).ToList();
            var weeklyHour   = weeklyTriggerVals[0];
            var weeklyMinute = weeklyTriggerVals[1];

            var weeklyTrigger = TriggerBuilder.Create()
                                .WithIdentity("weeklyTrigger", "weeklyGroup")
                                .StartNow()
                                .WithSchedule(CronScheduleBuilder.WeeklyOnDayAndHourAndMinute(DayOfWeek.Sunday, weeklyHour, weeklyMinute))
                                .Build();

            var dailyJob = JobBuilder.Create <DailyPostJob>()
                           .WithIdentity("dailyJob", "dailyGroup")
                           .Build();

            var dailyTriggerVals = _config["RingFit:Schedule:DailyChallengePost"].Split(':')
                                   .Select(x => Convert.ToUInt16(x)).ToList();
            var dailyHour   = dailyTriggerVals[0];
            var dailyMinute = dailyTriggerVals[1];

            var dailyTrigger = TriggerBuilder.Create()
                               .WithIdentity("dailyTrigger", "dailyGroup")
                               .StartNow()
                               .WithSchedule(CronScheduleBuilder.DailyAtHourAndMinute(dailyHour, dailyMinute))
                               .Build();

            await _scheduler.ScheduleJob(weeklyJob, weeklyTrigger);

            await _scheduler.ScheduleJob(dailyJob, dailyTrigger);
        }
Esempio n. 22
0
        /// <summary>
        /// 初始化定时器。
        /// 每周星期几定时执行。
        /// </summary>
        /// <param name="jobType">要执行的作业</param>
        /// <param name="weekday">星期几</param>
        /// <param name="hour">小时</param>
        /// <param name="minute">分钟</param>
        public void init(Type jobType, DayOfWeek dayOfWeek, int hour, int minute)
        {
            //工厂
            factory = new StdSchedulerFactory();
            //创建scheduler
            IScheduler scheduler = factory.GetScheduler();

            //启动
            scheduler.Start();
            //描述工作
            IJobDetail job = JobBuilder.Create(jobType).WithIdentity(jobType.Name, "myGroup").UsingJobData("name", "quartz").Build();
            //触发器
            ITrigger trigger = null;

            //每周星期几定时执行
            trigger = TriggerBuilder.Create()
                      .WithIdentity(jobType.Name + "trigger", "myGroup")
                      .WithSchedule(CronScheduleBuilder.WeeklyOnDayAndHourAndMinute(dayOfWeek, hour, minute))//每周相应时间执行
                      .Build();
            //执行
            scheduler.ScheduleJob(job, trigger);
        }
Esempio n. 23
0
        public static async void Start()
        {
            try
            {
                var scheduler = await StdSchedulerFactory.GetDefaultScheduler();

                await scheduler.Start();

                var job     = JobBuilder.Create <FollowEmailJob>().Build();
                var trigger = TriggerBuilder.Create()
                              .WithIdentity("trigger1", "group1")
                              .WithSchedule(CronScheduleBuilder
                                            .WeeklyOnDayAndHourAndMinute(DayOfWeek.Monday, 8, 45)
                                            .InTimeZone(TimeZoneInfo.FindSystemTimeZoneById("SE Asia Standard Time")))
                              .Build();
                await scheduler.ScheduleJob(job, trigger);
            }
            catch (Exception e)
            {
                Debug.WriteLine(e);
                Console.WriteLine(e);
            }
        }
Esempio n. 24
0
        /// <param name="scheduleConfig">Setting Key from your CloudConfigurations, value format "hh:mm;hh:mm;"</param>
        /// <param name="jobType">must inherit from IJob</param>
        /// <param name="timeZoneId">See http://alexandrebrisebois.wordpress.com/2013/01/20/using-quartz-net-to-schedule-jobs-in-windows-azure-worker-roles/#more-658 for Ids</param>
        public void ScheduleWeeklyJob(string scheduleConfig, Type jobType, string timeZoneId)
        {
            var schedule = CloudConfigurationManager.GetSetting(scheduleConfig);

            schedule.Split(';').Where(s => !string.IsNullOrWhiteSpace(s)).ToList().ForEach(h =>
            {
                var index   = h.IndexOf(':');
                var hour    = h.Substring(0, index);
                var minutes = h.Substring(index + 1, h.Length - (index + 1));

                var job = new JobDetailImpl(jobType.Name + hour + minutes, null,
                                            jobType);

                var trigger = TriggerBuilder.Create()
                              .StartNow()
                              .WithSchedule(CronScheduleBuilder.WeeklyOnDayAndHourAndMinute(DayOfWeek.Monday,
                                                                                            Convert.ToInt32(hour, CultureInfo.InvariantCulture),
                                                                                            Convert.ToInt32(minutes, CultureInfo.InvariantCulture))
                                            .InTimeZone(TimeZoneInfo.FindSystemTimeZoneById(timeZoneId)))
                              .Build();

                sched.ScheduleJob(job, trigger);
            });
        }
Esempio n. 25
0
        static async System.Threading.Tasks.Task Main(string[] args)
        {
            var props = new NameValueCollection()
            {
                { "quartz.serializer.type", "binary" }
            };

            var factory = new StdSchedulerFactory(props);

            IScheduler sched = await factory.GetScheduler();

            await sched.Start();

            var cal = new HolidayCalendar();

            cal.AddExcludedDate(DateTime.Now.AddDays(-1));
            await sched.AddCalendar("myHolidays", cal, false, false);

            IJobDetail job = JobBuilder.Create <DumbJob>().WithIdentity("myJob", "group1")
                             .UsingJobData("jobSays", "Hello World!")
                             .UsingJobData("myFloatValue", 3.141f)
                             .Build();

            ITrigger trigger = TriggerBuilder.Create().WithIdentity("myTrigger")
                               .WithSchedule(CronScheduleBuilder.CronSchedule("0-10 * * ? * * *")) // first 10 second every minute
                               .ModifiedByCalendar("myHolidays")                                   // but not on holidays
                               .Build();

            ITrigger trigger1 = TriggerBuilder.Create().WithIdentity("trigger1", "group1")
                                .WithCronSchedule("0-10 * * ? * * *")                        // first 10 second every minute
                                .ForJob("myJob", "group1")
                                .Build();

            ITrigger trigger2 = TriggerBuilder.Create().WithIdentity("myTrigger2")
                                .WithSchedule(CronScheduleBuilder.DailyAtHourAndMinute(16, 30)) // execute job daily at 16.30
                                .ModifiedByCalendar("myHolidays")                               // but not on holidays
                                .Build();

            //Build a trigger that will fire on Wednesdays at 10:42 am, in a TimeZone other than the system’s default:
            ITrigger trigger21 = TriggerBuilder.Create().WithIdentity("trigger21", "group1")
                                 .WithCronSchedule("0 42 10 ? * WED", x => x
                                                   .InTimeZone(TimeZoneInfo.FindSystemTimeZoneById("Central America Standard Time")))
                                 .Build();

            ITrigger trigger22 = TriggerBuilder.Create().WithIdentity("trigger3", "group1")
                                 .WithSchedule(CronScheduleBuilder.WeeklyOnDayAndHourAndMinute(DayOfWeek.Wednesday, 10, 42)
                                               .InTimeZone(TimeZoneInfo.FindSystemTimeZoneById("Central America Standard Time")))
                                 .Build();

            //SimpleTrigger : once at a specific moment in time, or at a specific moment in time followed by repeats at a specific interval.

            //Build a trigger for a specific moment in time, with no repeats:
            ISimpleTrigger trigger3 = (ISimpleTrigger)TriggerBuilder.Create().WithIdentity("myTrigger3", "group1")
                                      .StartAt(DateTimeOffset.UtcNow.AddSeconds(5))
                                      .ForJob("myJob", "group1")                               // identify job with name, group strings
                                      .Build();

            //Build a trigger for a specific moment in time, then repeating every ten seconds ten times:
            ISimpleTrigger trigger4 = (ISimpleTrigger)TriggerBuilder.Create().WithIdentity("myTrigger4", "group1")
                                      .StartAt(DateTimeOffset.UtcNow.AddSeconds(5))                               // if a start time is not given (if this line were omitted), "now" is implied
                                      .WithSimpleSchedule(x => x.WithIntervalInSeconds(10)
                                                          .WithRepeatCount(10))                                   // note that 10 repeats will give a total of 11 firings
                                      .ForJob("myJob", "group1")
                                      .Build();

            //Build a trigger that will fire once, five minutes in the future:
            ISimpleTrigger trigger5 = (ISimpleTrigger)TriggerBuilder.Create().WithIdentity("myTrigger5", "group1")
                                      .StartAt(DateBuilder.FutureDate(5, IntervalUnit.Second))                               // use DateBuilder to create a date in the future
                                      .ForJob("myJob", "group1")
                                      .Build();

            //Build a trigger that will fire now, then repeat every five minutes, until the hour 17:10:
            ISimpleTrigger trigger6 = (ISimpleTrigger)TriggerBuilder.Create().WithIdentity("myTrigger6", "group1")
                                      .WithSimpleSchedule(x => x.WithIntervalInSeconds(5)
                                                          .RepeatForever())
                                      .EndAt(DateBuilder.DateOf(22, 10, 0))
                                      .Build();

            //Build a trigger that will fire at the top of the next hour, then repeat every 2 hours, forever:
            ISimpleTrigger trigger7 = (ISimpleTrigger)TriggerBuilder.Create().WithIdentity("myTrigger7") // because group is not specified, "trigger8" will be in the default group
                                      .StartAt(DateBuilder.EvenHourDate(null))                           // get the next even-hour (minutes and seconds zero ("00:00"))
                                      .WithSimpleSchedule(x => x.WithIntervalInHours(2)
                                                          .RepeatForever())
                                      // note that in this example, 'forJob(..)' is not called
                                      //  - which is valid if the trigger is passed to the scheduler along with the job
                                      .Build();

            await sched.ScheduleJob(job, trigger1);

            Console.ReadLine();
        }
Esempio n. 26
0
        public static void StartJob <TJob>(IScheduler scheduler) where TJob : IJob
        {
            var jobName = typeof(TJob).FullName;

            var job = JobBuilder.Create <TJob>().WithIdentity(jobName).Build();

            var trigger = TriggerBuilder.Create().WithIdentity(jobName + "trigger").WithSchedule(CronScheduleBuilder.WeeklyOnDayAndHourAndMinute(DayOfWeek.Sunday, 0, 0)).ForJob(jobName).Build();

            scheduler.ScheduleJob(job, trigger);
        }
Esempio n. 27
0
 /// <summary>
 /// 每周某一天执行
 /// </summary>
 /// <param name="dayOfWeek"></param>
 /// <param name="hour"></param>
 /// <param name="minute"></param>
 /// <returns></returns>
 protected ITrigger TriggerWeekly(DayOfWeek dayOfWeek, int hour, int minute) =>
 BuildTrigger(t => t.WithSchedule(CronScheduleBuilder.WeeklyOnDayAndHourAndMinute(dayOfWeek, hour, minute)).Build());
Esempio n. 28
0
        protected override void OnStart(string[] args)
        {
            try
            {
                // construct a scheduler factory
                ISchedulerFactory schedFact = new StdSchedulerFactory();

                // get a scheduler
                IScheduler sched = schedFact.GetScheduler();
                sched.Start();

                // define the job and tie it to our HelloJob class
                IJobDetail job = JobBuilder.Create <HelloJob>()
                                 .WithIdentity("myJob", "group1")
                                 .Build();

                // Trigger the job to run now, and then every 40 seconds
                //ITrigger trigger = TriggerBuilder.Create()
                //  .WithIdentity("myTrigger", "group1")
                //  .StartNow()
                //  .WithSimpleSchedule(x => x
                //      .WithIntervalInSeconds(40)
                //      .RepeatForever())
                //  .Build();

                ITrigger trigger;


                //holiday calendar
                //HolidayCalendar cal = new HolidayCalendar();
                //cal.AddExcludedDate(DateTime.Now.AddDays(1));

                //sched.AddCalendar("myHolidays", cal, false,false);

                if (CSMV3Function.GetIsDaily())
                {
                    logger.Debug("Start Daily");
                    trigger = TriggerBuilder.Create()
                              .WithIdentity("myTrigger")
                              .WithSchedule(CronScheduleBuilder.DailyAtHourAndMinute(CSMV3Function.GetHour(),
                                                                                     CSMV3Function.GetMinutes())) // execute job daily at
                                                                                                                  //.ModifiedByCalendar("myHolidays") // but not on holidays
                              .Build();
                }
                else if (CSMV3Function.GetIsWeekly())
                {
                    logger.Debug("Start Weekly");
                    logger.Debug("Day of week is : " + CSMV3Function.GetDayofWeek());
                    trigger = TriggerBuilder.Create()
                              .WithIdentity("myTrigger")
                              .WithSchedule(CronScheduleBuilder.WeeklyOnDayAndHourAndMinute(CSMV3Function.GetDayofWeek(),
                                                                                            CSMV3Function.GetHour(),
                                                                                            CSMV3Function.GetMinutes())) // execute job daily at
                                                                                                                         //.ModifiedByCalendar("myHolidays") // but not on holidays
                              .Build();
                }
                else if (CSMV3Function.GetIsMonthly())
                {
                    logger.Debug("Start Monthly");
                    logger.Debug("Day of month is : " + CSMV3Function.GetDayofMonth());
                    trigger = TriggerBuilder.Create()
                              .WithIdentity("myTrigger")
                              .WithSchedule(CronScheduleBuilder.MonthlyOnDayAndHourAndMinute(CSMV3Function.GetDayofMonth(),
                                                                                             CSMV3Function.GetHour(),
                                                                                             CSMV3Function.GetMinutes())) // execute job daily at
                                                                                                                          //.ModifiedByCalendar("myHolidays") // but not on holidays
                              .Build();
                }
                else
                {
                    trigger = TriggerBuilder.Create()
                              .WithIdentity("myTrigger", "group1")
                              .WithSimpleSchedule(x => x
                                                  .WithIntervalInSeconds(CSMV3Function.GetIntervalinSeconds())
                                                  .RepeatForever())
                              .EndAt(DateBuilder.DateOf(22, 0, 0))
                              .Build();
                }



                sched.ScheduleJob(job, trigger);
            }
            catch (Exception ex)
            {
                logger.Error(ex.Message);
                logger.Error(ex.InnerException);
                throw;
            }
        }
Esempio n. 29
0
 public static TriggerBuilder TriggerWeekly_(this TriggerBuilder builder, DayOfWeek dayOfWeek, int hour, int minute, string name, string group = null)
 {
     builder = builder.WithIdentity_(name, group).WithSchedule(CronScheduleBuilder.WeeklyOnDayAndHourAndMinute(dayOfWeek, hour, minute));
     return(builder);
 }
Esempio n. 30
0
        private IEnumerable <ITrigger> CreateTriggers()
        {
            var settingsService = Service.Resolve <ISettingsService <ScheduledJobsSettings> >();
            var s = settingsService.GetSettings();

            if (s.CouchPotatoCacher == 0)
            {
                s.CouchPotatoCacher = 60;
            }
            if (s.WatcherCacher == 0)
            {
                s.WatcherCacher = 60;
            }
            if (s.PlexAvailabilityChecker == 0)
            {
                s.PlexAvailabilityChecker = 60;
            }
            if (s.PlexEpisodeCacher == 0)
            {
                s.PlexEpisodeCacher = 11;
            }
            if (string.IsNullOrEmpty(s.RecentlyAddedCron))
            {
                var cron =
                    (Quartz.Impl.Triggers.CronTriggerImpl)
                    CronScheduleBuilder.WeeklyOnDayAndHourAndMinute(DayOfWeek.Friday, 7, 0).Build();
                s.RecentlyAddedCron = cron.CronExpressionString; // Weekly CRON at 7 am on Mondays
            }
            if (s.SickRageCacher == 0)
            {
                s.SickRageCacher = 60;
            }
            if (s.SonarrCacher == 0)
            {
                s.SonarrCacher = 60;
            }
            if (s.StoreBackup == 0)
            {
                s.StoreBackup = 24;
            }
            if (s.StoreCleanup == 0)
            {
                s.StoreCleanup = 24;
            }
            if (s.UserRequestLimitResetter == 0)
            {
                s.UserRequestLimitResetter = 12;
            }
            if (s.FaultQueueHandler == 0)
            {
                s.FaultQueueHandler = 6;
            }
            if (s.PlexContentCacher == 0)
            {
                s.PlexContentCacher = 60;
            }
            if (s.PlexUserChecker == 0)
            {
                s.PlexUserChecker = 24;
            }
            if (s.RadarrCacher == 0)
            {
                s.RadarrCacher = 60;
            }
            if (s.EmbyContentCacher == 0)
            {
                s.EmbyContentCacher = 60;
            }
            if (s.EmbyAvailabilityChecker == 0)
            {
                s.EmbyAvailabilityChecker = 60;
            }
            if (s.EmbyEpisodeCacher == 0)
            {
                s.EmbyEpisodeCacher = 11;
            }
            if (s.EmbyUserChecker == 0)
            {
                s.EmbyUserChecker = 24;
            }

            var triggers = new List <ITrigger>();

            var plexAvailabilityChecker =
                TriggerBuilder.Create()
                .WithIdentity("PlexAvailabilityChecker", "Plex")
                .StartAt(DateBuilder.FutureDate(5, IntervalUnit.Minute))
                .WithSimpleSchedule(x => x.WithIntervalInMinutes(s.PlexAvailabilityChecker).RepeatForever())
                .Build();
            var plexCacher =
                TriggerBuilder.Create()
                .WithIdentity("PlexContentCacher", "PlexCacher")
                .StartNow()
                .WithSimpleSchedule(x => x.WithIntervalInMinutes(s.PlexContentCacher).RepeatForever())
                .Build();

            var plexUserChecker =
                TriggerBuilder.Create()
                .WithIdentity("PlexUserChecker", "Plex")
                .StartAt(DateBuilder.FutureDate(1, IntervalUnit.Minute))
                .WithSimpleSchedule(x => x.WithIntervalInMinutes(s.PlexUserChecker).RepeatForever())
                .Build();

            var srCacher =
                TriggerBuilder.Create()
                .WithIdentity("SickRageCacher", "Cache")
                .StartAt(DateBuilder.FutureDate(2, IntervalUnit.Minute))
                .WithSimpleSchedule(x => x.WithIntervalInMinutes(s.SickRageCacher).RepeatForever())
                .Build();

            var sonarrCacher =
                TriggerBuilder.Create()
                .WithIdentity("SonarrCacher", "Cache")
                .StartAt(DateBuilder.FutureDate(3, IntervalUnit.Minute))
                .WithSimpleSchedule(x => x.WithIntervalInMinutes(s.SonarrCacher).RepeatForever())
                .Build();

            var cpCacher =
                TriggerBuilder.Create()
                .WithIdentity("CouchPotatoCacher", "Cache")
                .StartAt(DateBuilder.FutureDate(2, IntervalUnit.Minute))
                .WithSimpleSchedule(x => x.WithIntervalInMinutes(s.CouchPotatoCacher).RepeatForever())
                .Build();

            var watcherCacher =
                TriggerBuilder.Create()
                .WithIdentity("WatcherCacher", "Cache")
                //.StartNow()
                .StartAt(DateBuilder.FutureDate(2, IntervalUnit.Minute))
                .WithSimpleSchedule(x => x.WithIntervalInMinutes(s.WatcherCacher).RepeatForever())
                .Build();

            var radarrCacher =
                TriggerBuilder.Create()
                .WithIdentity("RadarrCacher", "Cache")
                .StartNow()
                //.StartAt(DateBuilder.FutureDate(2, IntervalUnit.Minute))
                .WithSimpleSchedule(x => x.WithIntervalInMinutes(s.RadarrCacher).RepeatForever())
                .Build();

            var storeBackup =
                TriggerBuilder.Create()
                .WithIdentity("StoreBackup", "Database")
                .StartAt(DateBuilder.FutureDate(20, IntervalUnit.Minute))
                .WithSimpleSchedule(x => x.WithIntervalInHours(s.StoreBackup).RepeatForever())
                .Build();

            var storeCleanup =
                TriggerBuilder.Create()
                .WithIdentity("StoreCleanup", "Database")
                .StartAt(DateBuilder.FutureDate(35, IntervalUnit.Minute))
                .WithSimpleSchedule(x => x.WithIntervalInHours(s.StoreCleanup).RepeatForever())
                .Build();

            var userRequestLimiter =
                TriggerBuilder.Create()
                .WithIdentity("UserRequestLimiter", "Request")
                .StartAt(DateBuilder.FutureDate(25, IntervalUnit.Minute))
                // Everything has started on application start, lets wait 5 minutes
                .WithSimpleSchedule(x => x.WithIntervalInHours(s.UserRequestLimitResetter).RepeatForever())
                .Build();

            var plexEpCacher =
                TriggerBuilder.Create()
                .WithIdentity("PlexEpisodeCacher", "Cache")
                .StartAt(DateBuilder.FutureDate(10, IntervalUnit.Minute))
                .WithSimpleSchedule(x => x.WithIntervalInHours(s.PlexEpisodeCacher).RepeatForever())
                .Build();


            var rencentlyAdded =
                TriggerBuilder.Create()
                .WithIdentity("RecentlyAddedModel", "Email")
                .StartNow()
                .WithCronSchedule(s.RecentlyAddedCron)
                .Build();

            var fault =
                TriggerBuilder.Create()
                .WithIdentity("FaultQueueHandler", "Fault")
                //.StartAt(DateBuilder.FutureDate(10, IntervalUnit.Minute))
                .StartAt(DateBuilder.FutureDate(13, IntervalUnit.Minute))
                .WithSimpleSchedule(x => x.WithIntervalInHours(s.FaultQueueHandler).RepeatForever())
                .Build();


            //Emby
            var embyEpisode =
                TriggerBuilder.Create()
                .WithIdentity("EmbyEpisodeCacher", "Emby")
                //.StartNow()
                .StartAt(DateBuilder.FutureDate(10, IntervalUnit.Minute))
                .WithSimpleSchedule(x => x.WithIntervalInHours(s.EmbyEpisodeCacher).RepeatForever())
                .Build();

            var embyContentCacher =
                TriggerBuilder.Create()
                .WithIdentity("EmbyContentCacher", "Emby")
                .StartNow()
                .WithSimpleSchedule(x => x.WithIntervalInHours(s.EmbyContentCacher).RepeatForever())
                .Build();

            var embyAvailabilityChecker =
                TriggerBuilder.Create()
                .WithIdentity("EmbyAvailabilityChecker", "Emby")
                .StartAt(DateBuilder.FutureDate(5, IntervalUnit.Minute))
                .WithSimpleSchedule(x => x.WithIntervalInHours(s.EmbyAvailabilityChecker).RepeatForever())
                .Build();

            var embyUserChecker =
                TriggerBuilder.Create()
                .WithIdentity("EmbyUserChecker", "Emby")
                //.StartNow()
                .StartAt(DateBuilder.FutureDate(1, IntervalUnit.Minute))
                .WithSimpleSchedule(x => x.WithIntervalInHours(s.EmbyUserChecker).RepeatForever())
                .Build();

            triggers.Add(rencentlyAdded);
            triggers.Add(plexAvailabilityChecker);
            triggers.Add(srCacher);
            triggers.Add(sonarrCacher);
            triggers.Add(cpCacher);
            triggers.Add(watcherCacher);
            triggers.Add(storeBackup);
            triggers.Add(storeCleanup);
            triggers.Add(userRequestLimiter);
            triggers.Add(plexEpCacher);
            triggers.Add(fault);
            triggers.Add(plexCacher);
            triggers.Add(plexUserChecker);
            triggers.Add(radarrCacher);
            triggers.Add(embyEpisode);
            triggers.Add(embyAvailabilityChecker);
            triggers.Add(embyContentCacher);
            triggers.Add(embyUserChecker);

            return(triggers);
        }