public static async void Start(IServiceProvider serviceProvider)
        {
            var configuration = serviceProvider.GetService <IConfiguration>();

            if (configuration != null)
            {
                var schedulerOptions = configuration.GetSection(SchedulerOptions.Scheduler).Get <SchedulerOptions>();
                var timeZoneOptions  = configuration.GetSection(TimeZoneOptions.TimeZone).Get <TimeZoneOptions>();

                var timeZoneId = RuntimeInformation.IsOSPlatform(OSPlatform.Windows)
                    ? timeZoneOptions.Windows
                    : timeZoneOptions.Linux;

                var scheduler = await StdSchedulerFactory.GetDefaultScheduler();

                scheduler.JobFactory =
                    serviceProvider.GetService <JobFactory>() ?? throw new InvalidOperationException();
                await scheduler.Start();

                var jobDetail = JobBuilder.Create <SendCookingPollJob>().Build();
                var trigger   = TriggerBuilder.Create()
                                .WithSchedule(CronScheduleBuilder
                                              .AtHourAndMinuteOnGivenDaysOfWeek(schedulerOptions.Hours, schedulerOptions.Minutes, DayOfWeek.Monday, DayOfWeek.Tuesday, DayOfWeek.Wednesday, DayOfWeek.Thursday, DayOfWeek.Friday)
                                              .InTimeZone(TimeZoneInfo.FindSystemTimeZoneById(timeZoneId)))
                                .Build();

                await scheduler.ScheduleJob(jobDetail, trigger);
            }
            else
            {
                throw new InvalidOperationException("Service not found!");
            }
        }
Exemplo n.º 2
0
 private void CreateRoutine()
 {
     var time            = _settings.Schedule.Time;
     var days            = GetSystemDaysOfWeek(_settings.Schedule.DaysOfWeek).ToArray();
     var scheduleBuilder = CronScheduleBuilder.AtHourAndMinuteOnGivenDaysOfWeek(time.Hour, time.Minute, days);
     var trigger         = TriggerBuilder.Create().StartNow().WithSchedule(scheduleBuilder).Build();
 }
Exemplo n.º 3
0
 public override ITrigger GetTrigger()
 {
     return(TriggerBuilder.Create()
            .WithSchedule(CronScheduleBuilder
                          .AtHourAndMinuteOnGivenDaysOfWeek(11, 00, DayOfWeek.Tuesday))
            .Build());
 }
Exemplo n.º 4
0
        private void BuildJob()
        {
            StdSchedulerFactory schedFact = new StdSchedulerFactory();
            Task <IScheduler>   sched     = schedFact.GetScheduler();

            sched.Result.Start();
            IJobDetail immediateTimeReportsSyncJob = JobBuilder.Create <TimeReportsSyncJob>()
                                                     .WithIdentity("immediateTimeReportsSync", "timeReportsSync")
                                                     .Build();

            ITrigger immediateTimeReportsSyncTrigger = TriggerBuilder.Create()
                                                       .WithIdentity("immediateTimeReportsSync", "timeReportsSync")
                                                       .StartNow()
                                                       .Build();

            IJobDetail dailyTimeReportsSyncJob = JobBuilder.Create <TimeReportsSyncJob>()
                                                 .WithIdentity("dailyTimeReportsSync", "timeReportsSync")
                                                 .Build();


            ITrigger dailyTimeReportsSyncTrigger = TriggerBuilder.Create()
                                                   .WithIdentity("dailyTimeReportsSync", "timeReportsSync")
                                                   .WithSchedule(CronScheduleBuilder.AtHourAndMinuteOnGivenDaysOfWeek(23, 58, DayOfWeek.Sunday, DayOfWeek.Monday, DayOfWeek.Tuesday, DayOfWeek.Wednesday, DayOfWeek.Thursday))
                                                   .Build();

            sched.Result.ScheduleJob(immediateTimeReportsSyncJob, immediateTimeReportsSyncTrigger).ContinueWith(t => sched.Result.ScheduleJob(dailyTimeReportsSyncJob, dailyTimeReportsSyncTrigger));
        }
Exemplo n.º 5
0
        /// <summary>
        /// 每周
        /// </summary>
        public static long AddWeeklySchedule(DayOfWeek[] days, int hour, int minute, long actorId, string actorAgentType, string handlerType, Param param)
        {
            long id      = newID();
            var  trigger = TriggerBuilder.Create().StartNow().WithSchedule(CronScheduleBuilder.AtHourAndMinuteOnGivenDaysOfWeek(hour, minute, days)).Build();

            scheduler.ScheduleJob(getJobDetail(id, actorId, actorAgentType, handlerType, param), trigger);
            return(id);
        }
Exemplo n.º 6
0
        public async Task <ITrigger> FillTriggerAsync(Services.Notification.NotificationSchedule value)
        {
            DayOfWeek[] weekDays = new DayOfWeek[7];

            int i = 0;

            if (value.RunOnSunday)
            {
                weekDays[i++] = DayOfWeek.Sunday;
            }
            if (value.RunOnMonday)
            {
                weekDays[i++] = DayOfWeek.Monday;
            }
            if (value.RunOnTuesday)
            {
                weekDays[i++] = DayOfWeek.Tuesday;
            }
            if (value.RunOnWednesday)
            {
                weekDays[i++] = DayOfWeek.Wednesday;
            }
            if (value.RunOnThursday)
            {
                weekDays[i++] = DayOfWeek.Thursday;
            }
            if (value.RunOnFriday)
            {
                weekDays[i++] = DayOfWeek.Friday;
            }
            if (value.RunOnSaturday)
            {
                weekDays[i++] = DayOfWeek.Saturday;
            }

            if (await Scheduler.CheckExists(new TriggerKey(value.SubscriberID, value.NotificationType)) == true)
            {
                await Scheduler.DeleteJob(new JobKey(value.SubscriberID, value.NotificationType));
            }
            var k       = new TriggerKey(value.SubscriberID, value.NotificationType);
            var trigger = TriggerBuilder.Create()
                          .WithIdentity(k)
                          .WithSchedule(CronScheduleBuilder
                                        .AtHourAndMinuteOnGivenDaysOfWeek(value.RunOnHour, value.RunOnMinute, weekDays.Take(i).ToArray()))
                          .ForJob(new JobKey(value.NotificationType))
                          .Build();

            return(trigger);
        }
        public void TestAtHourAndMinuteOnGivenDaysOfWeek()
        {
            var trigger = (ICronTrigger)TriggerBuilder.Create()
                          .WithIdentity("test")
                          .WithSchedule(CronScheduleBuilder.AtHourAndMinuteOnGivenDaysOfWeek(10, 0, DayOfWeek.Monday, DayOfWeek.Thursday, DayOfWeek.Friday))
                          .Build();

            Assert.AreEqual("0 0 10 ? * 2,5,6", trigger.CronExpressionString);

            trigger = (ICronTrigger)TriggerBuilder.Create().WithIdentity("test")
                      .WithSchedule(CronScheduleBuilder.AtHourAndMinuteOnGivenDaysOfWeek(10, 0, DayOfWeek.Wednesday))
                      .Build();

            Assert.AreEqual("0 0 10 ? * 4", trigger.CronExpressionString);
        }
        // Method to schedule task.
        public void Start(int hour, int min, string baseUrl, DayOfWeek[] selectedDays)
        {
            var scheduler = StdSchedulerFactory.GetDefaultScheduler().GetAwaiter().GetResult();

            scheduler.Start();

            IJobDetail job = JobBuilder.Create <ScheduleTaskReminder>().
                             UsingJobData("baseUrl", baseUrl).
                             Build();

            CronScheduleBuilder csb = CronScheduleBuilder
                                      .AtHourAndMinuteOnGivenDaysOfWeek(hour, min, selectedDays);

            ICronTrigger trigger = (ICronTrigger)TriggerBuilder
                                   .Create()
                                   .WithSchedule(csb)
                                   .Build();

            scheduler.ScheduleJob(job, trigger);
        }
Exemplo n.º 9
0
        public virtual DateTimeOffset ScheduleJob(string name, int hour, int minute, DayOfWeek[] daysOfWeek)
        {
            CronScheduleBuilder scheduleBuilder = CronScheduleBuilder.AtHourAndMinuteOnGivenDaysOfWeek(hour, minute, daysOfWeek);
            JobDataMap          dataMap         = new JobDataMap
            {
                { "JobName", name }
            };
            IJobDetail jobDetail = JobBuilder
                                   .Create <EnqueingJob>()
                                   .WithIdentity(name)
                                   .SetJobData(dataMap)
                                   .Build();
            ITrigger trigger = TriggerBuilder
                               .Create()
                               .WithIdentity($"Orchestrator-{name}")
                               .WithSchedule(scheduleBuilder)
                               .Build();

            return(Scheduler.ScheduleJob(jobDetail, trigger));
        }
Exemplo n.º 10
0
        private KeyValuePair <IJobDetail, ITrigger> CreateCronJob(
            Guid id,
            string deviceData,
            DateTime time,
            DayOfWeek[] days,
            bool isActivate)
        {
            var type = isActivate ? "Activate" : "Deactivate";
            var job  = JobBuilder.Create <DeviceJob>()
                       .UsingJobData("state", isActivate)
                       .UsingJobData("deviceData", deviceData)
                       .WithIdentity(type, id.ToString())
                       .Build();
            var trigger = TriggerBuilder.Create()
                          .WithIdentity(type, id.ToString())
                          .WithSchedule(CronScheduleBuilder
                                        .AtHourAndMinuteOnGivenDaysOfWeek(time.Hour, time.Minute, days))
                          .Build();

            return(new KeyValuePair <IJobDetail, ITrigger>(job, trigger));
        }
Exemplo n.º 11
0
        // This method gets called by the runtime. Use this method to add services to the container.
        // For more information on how to configure your application, visit https://go.microsoft.com/fwlink/?LinkID=398940
        public IServiceProvider ConfigureServices(IServiceCollection services)
        {
            services.AddMvc();

            StdSchedulerFactory factory   = new StdSchedulerFactory();
            IScheduler          scheduler = factory.GetScheduler().Result;
            IJobDetail          job       = JobBuilder.Create <Job>().WithIdentity(new JobKey("potato")).Build();
            ITrigger            trigger   = TriggerBuilder.Create().WithSchedule(
                CronScheduleBuilder.AtHourAndMinuteOnGivenDaysOfWeek(
                    23,
                    0,
                    DayOfWeek.Monday,
                    DayOfWeek.Saturday)).Build();
            Task <DateTimeOffset> offset = scheduler.ScheduleJob(job, trigger);

            scheduler.Start();

            IWindsorContainer container = CreateWindsorRegistration();

            return(services.AddWindsor(container));
        }
Exemplo n.º 12
0
        private static ITrigger CreateTriggerForSpecificRunTime(string triggerName, string runAtTime, string runOnDays, string excludeCalendar, string targetTimeZone)
        {
            ITrigger trigger = null;

            TimeZoneInfo timezone = TimeZoneInfo.Local;

            if (!string.IsNullOrEmpty(targetTimeZone))
            {
                timezone = TimeZoneInfo.FindSystemTimeZoneById(targetTimeZone);
            }

            if (!string.IsNullOrEmpty(runOnDays))
            {
                var daysOfWeek = ScheduleStringHelper.GetDaysOfWeekToRunOn(runOnDays);
                var runAtTuple = ScheduleStringHelper.GetHoursAndMinutes(runAtTime);

                trigger = TriggerBuilder.Create()
                          .WithIdentity(triggerName)
                          .WithDescription($"Run at: {runAtTime}, run days: {runOnDays}, exclusion calendar: {excludeCalendar}")
                          .WithSchedule(CronScheduleBuilder.AtHourAndMinuteOnGivenDaysOfWeek(runAtTuple.Item1, runAtTuple.Item2, daysOfWeek)
                                        .InTimeZone(timezone))
                          .ModifiedByCalendar(excludeCalendar)
                          .StartNow()
                          .Build();
            }
            //else if (!string.IsNullOrEmpty(runCalendar))
            //{
            //    trigger = TriggerBuilder.Create()
            //                            .WithIdentity(string.Format("Trigger_for_{0}", job.Key))
            //                            .WithDescription(string.Format("Run at: {0}, run calendar: {1}, exclusion calendar: {2}", runAt, runCalendar, excludeCalendar))
            //                            .WithSchedule(CronScheduleBuilder.)
            //                            .WithSchedule(CronScheduleBuilder.DailyAtHourAndMinute(hour, minute))
            //                            .ModifiedByCalendar(runCalendar)
            //                            .StartNow()
            //                            .Build();
            //}

            return(trigger);
        }
Exemplo n.º 13
0
        private TriggerBuilder GetTriggerBuilder(JobDetail jd, TriggerDetail td)
        {
            var trigger = TriggerBuilder.Create();

            trigger.WithIdentity(td.TriggerKey, jd.Group);
            trigger.ForJob(jd.JobKey);
            trigger.WithPriority(td.Priority);
            trigger.StartAt(td.StartTime);
            if (td.EndTime != null && !td.EndTime.Equals(DateTime.MinValue))
            {
                trigger.EndAt(td.EndTime);
            }

            switch (td.ScheduleTypeValue.ToLower())
            {
            case "seconds":
                if (td.RepeatInterval > 0)
                {
                    if (td.RepeatCount > 0)
                    {
                        trigger = trigger.WithSimpleSchedule(x => x
                                                             .WithIntervalInSeconds(td.RepeatInterval)
                                                             .WithRepeatCount(td.RepeatCount)
                                                             );
                    }
                    else
                    {
                        trigger = trigger.WithSimpleSchedule(x => x
                                                             .WithIntervalInSeconds(td.RepeatInterval)
                                                             .RepeatForever()
                                                             );
                    }
                }
                else
                {
                    Log.Warn(String.Format("Job {0} was configured with {1} schedule but no Repeat Interval mentioned. Please configure the Repeat Interval correctly !!", jd.JobKey, td.ScheduleType), this);
                }


                Diagnostics.Log.Info(String.Format("ScheduleType {0} and Schedule : {1})", td.ScheduleType, trigger.ToString()), this);

                break;

            case "minutes":
                if (td.RepeatInterval > 0)
                {
                    if (td.RepeatCount > 0)
                    {
                        trigger = trigger.WithSimpleSchedule(x => x
                                                             .WithIntervalInMinutes(td.RepeatInterval)
                                                             .WithRepeatCount(td.RepeatCount)
                                                             );
                    }
                    else
                    {
                        trigger = trigger.WithSimpleSchedule(x => x
                                                             .WithIntervalInMinutes(td.RepeatInterval)
                                                             .RepeatForever()
                                                             );
                    }
                }
                else
                {
                    Log.Warn(String.Format("Job {0} was configured with {1} schedule but no Repeat Interval mentioned. Please configure the Repeat Interval correctly !!", jd.JobKey, td.ScheduleType), this);
                }


                Diagnostics.Log.Info(String.Format("ScheduleType {0} and Schedule : {1})", td.ScheduleType, trigger.ToString()), this);

                break;

            case "hours":
                if (td.RepeatInterval > 0)
                {
                    if (td.RepeatCount > 0)
                    {
                        trigger = trigger.WithSimpleSchedule(x => x
                                                             .WithIntervalInHours(td.RepeatInterval)
                                                             .WithRepeatCount(td.RepeatCount)
                                                             );
                    }
                    else
                    {
                        trigger = trigger.WithSimpleSchedule(x => x
                                                             .WithIntervalInHours(td.RepeatInterval)
                                                             .RepeatForever()
                                                             );
                    }
                }
                else
                {
                    Log.Warn(String.Format("Job {0} was configured with {1} schedule but no Repeat Interval mentioned. Please configure the Repeat Interval correctly !!", jd.JobKey, td.ScheduleType), this);
                }


                Diagnostics.Log.Info(String.Format("ScheduleType {0} and Schedule : {1})", td.ScheduleType, trigger.ToString()), this);

                break;

            case "daily":
                trigger.WithSchedule(CronScheduleBuilder.DailyAtHourAndMinute(td.StartTime.Hour, td.StartTime.Minute));
                break;

            case "weekly":
                //Convert Sitecore DaysOfWeeks property to System.DaysOfWeek which is understood by Quartz.net
                if (td.DaysOfWeeks != null && td.DaysOfWeeks.Count > 0)
                {
                    System.DayOfWeek[] dayOfWeeks = new System.DayOfWeek[td.DaysOfWeeks.Count];
                    for (int i = 0; i < td.DaysOfWeeks.Count; i++)
                    {
                        dayOfWeeks[i] = (System.DayOfWeek)Enum.Parse(typeof(System.DayOfWeek), td.DaysOfWeeks[i].DayOfWeekValue.ToString());
                    }

                    trigger.WithSchedule(CronScheduleBuilder.AtHourAndMinuteOnGivenDaysOfWeek(td.StartTime.Hour, td.StartTime.Minute, dayOfWeeks));
                }
                else
                {
                    Log.Warn(String.Format("Job {0} was configured with {1} schedule but \"Day of Weeks\" was not set correctly. Please configure the trigger correctly !!", jd.JobKey, td.ScheduleType), this);
                }
                break;

            case "monthly":
                if (td.DayOfMonth > 0)
                {
                    trigger.WithSchedule(CronScheduleBuilder.MonthlyOnDayAndHourAndMinute(td.DayOfMonth, td.StartTime.Hour, td.StartTime.Minute));
                }
                else
                {
                    Log.Warn(String.Format("Job {0} was configured with {1} schedule but \"Day of Month\" was not set correctly. Please configure the trigger correctly !!", jd.JobKey, td.ScheduleType), this);
                }

                break;

            case "custom":
                if (!String.IsNullOrEmpty(td.CronExpression))
                {
                    trigger.WithSchedule(CronScheduleBuilder.CronSchedule(new CronExpression(td.CronExpression)));
                }
                else
                {
                    Log.Warn(String.Format("Job {0} was configured with {1} schedule but \"Cron Expression\" was not set correctly. Please configure the trigger correctly !!", jd.JobKey, td.ScheduleType), this);
                }
                break;
            }


            return(trigger);
        }
Exemplo n.º 14
0
        public static void Start(IContainer container)
        {
            Container = container;
            var scheduler = container.Resolve <IScheduler>();

            scheduler.JobFactory = new AutofacJobFactory(container);
            scheduler.Start();

            // create jobs // comment as per client comment
            var dailyChoresJob = JobBuilder.Create <CreateDailyChores>()
                                 .WithIdentity("dailyChoresJob", "createChore")
                                 .Build();

            var weeklyChoresJob = JobBuilder.Create <CreateWeeklyChores>()
                                  .WithIdentity("weeklyChoresJob", "createChore")
                                  .Build();

            var makeWeeklyPaymentJob = JobBuilder.Create <MakeWeeklyPayment>()
                                       .WithIdentity("makeWeeklyPaymentJob", "createChore")
                                       .Build();

            var sendWeeklyPaydayStatusJob = JobBuilder.Create <SendWeeklyPaydayStatus>()
                                            .WithIdentity("sendWeeklyPaydayStatusJob", "sendStatus")
                                            .Build();

            var notifyIncompleteMemberEnrollmentJob = JobBuilder.Create <NotifyIncompleteMemberEnrollmentJob>()
                                                      .WithIdentity("notifyIncompleteMemberEnrollmentJob", "incompleteNewMemberEnrollment")
                                                      .Build();

            var notifyParentHasNotLoggedInJob = JobBuilder.Create <NotifyParentHasNotLoggedInJob>()
                                                .WithIdentity("notifyParentHasNotLoggedInJob", "parentHasNotLoggedIn")
                                                .Build();

            var renewSubscriptionJob = JobBuilder.Create <RenewSubscriptionJob>()
                                       .WithIdentity("renewSubscriptionJob", "subscription")
                                       .Build();

            var notifyChildHasNotLoggedInJob = JobBuilder.Create <NotifyChildHasNotLoggedInJob>()
                                               .WithIdentity("notifyChildHasNotLoggedInJob", "childHasNotLoggedIn")
                                               .Build();

            var notifyNoChoreCompletedJob = JobBuilder.Create <NotifyNoChoreCompletedJob>()
                                            .WithIdentity("notifyNoChoreCompletedJob", "noChoreCompleted")
                                            .Build();

            var notifyContinuousChildActivityJob = JobBuilder.Create <NotifyContinuousChildActivityJob>()
                                                   .WithIdentity("notifyContinuousChildActivityJob", "continuousChildActivity")
                                                   .Build();

            var notifySubscriptionRenewalJob = JobBuilder.Create <NotifySubscriptionRenewalJob>()
                                               .WithIdentity("notifySubscriptionRenewalJob", "subscription")
                                               .Build();

            var remindSMSApprovalJob = JobBuilder.Create <RemindSMSApprovalJob>()
                                       .WithIdentity("remindSMSApprovalJob", "reminder")
                                       .Build();

            var cancelNotRespondedSMSJob = JobBuilder.Create <CancelNotRespondedSMSJob>()
                                           .WithIdentity("cancelNotRespondedSMSJob", "reminder")
                                           .Build();

            var remindChorePaymentApprovalJob = JobBuilder.Create <RemindChorePaymentJob>()
                                                .WithIdentity("remindChorePaymentApprovalJob", "reminder")
                                                .Build();

            // Azure Service Bus Job
            var coreproMessageJob = JobBuilder.Create <CoreProMessageJob>()
                                    .WithIdentity("coreproMessageJob", "notification")
                                    .Build();

            var cancelPandingPaydayRequest = JobBuilder.Create <CancelPandingPaydayRequest>()
                                             .WithIdentity("cancelPandingPaydayRequest", "cancelChore")
                                             .Build();


            //create triggers  // comment as per client comment
            var dailyChoresTrigger = TriggerBuilder.Create()
                                     .WithIdentity("dailyChoresTrigger", "createChore")
                                     .WithSchedule(CronScheduleBuilder.AtHourAndMinuteOnGivenDaysOfWeek(1, 0, DayOfWeek.Sunday).InTimeZone(TimeZoneInfo.FindSystemTimeZoneById("US Mountain Standard Time")))
                                     .ForJob("dailyChoresJob", "createChore")
                                     .Build();

            var weeklyChoresTrigger = TriggerBuilder.Create()
                                      .WithIdentity("weeklyChoresTrigger", "createChore")
                                      .WithSchedule(CronScheduleBuilder.AtHourAndMinuteOnGivenDaysOfWeek(1, 30, DayOfWeek.Sunday).InTimeZone(TimeZoneInfo.FindSystemTimeZoneById("US Mountain Standard Time")))
                                      .ForJob("weeklyChoresJob", "createChore")
                                      .Build();


            var notifyIncompleteNewMemberEnrollmentTrigger = TriggerBuilder.Create()
                                                             .WithIdentity("notifyIncompleteNewMemberEnrollmentTrigger", "incompleteNewMemberEnrollment")
                                                             .WithSchedule(CronScheduleBuilder.DailyAtHourAndMinute(2, 0).InTimeZone(TimeZoneInfo.FindSystemTimeZoneById("US Mountain Standard Time")))
                                                             .ForJob("notifyIncompleteMemberEnrollmentJob", "incompleteNewMemberEnrollment")
                                                             .Build();

            var notifyParentHasNotLoggedInTrigger = TriggerBuilder.Create()
                                                    .WithIdentity("notifyParentHasNotLoggedInTrigger", "parentHasNotLoggedIn")
                                                    .WithSchedule(CronScheduleBuilder.DailyAtHourAndMinute(2, 30).InTimeZone(TimeZoneInfo.FindSystemTimeZoneById("US Mountain Standard Time")))
                                                    .ForJob("notifyParentHasNotLoggedInJob", "parentHasNotLoggedIn")
                                                    .Build();

            var notifyChildHasNotLoggedInTrigger = TriggerBuilder.Create()
                                                   .WithIdentity("notifyChildHasNotLoggedInTrigger", "childHasNotLoggedIn")
                                                   .WithSchedule(CronScheduleBuilder.DailyAtHourAndMinute(3, 0).InTimeZone(TimeZoneInfo.FindSystemTimeZoneById("US Mountain Standard Time")))
                                                   .ForJob("notifyChildHasNotLoggedInJob", "childHasNotLoggedIn")
                                                   .Build();

            var notifyNoChoreCompletedTrigger = TriggerBuilder.Create()
                                                .WithIdentity("notifyNoChoreCompletedTrigger", "noChoreCompleted")
                                                .WithSchedule(CronScheduleBuilder.DailyAtHourAndMinute(3, 30).InTimeZone(TimeZoneInfo.FindSystemTimeZoneById("US Mountain Standard Time")))
                                                .ForJob("notifyNoChoreCompletedJob", "noChoreCompleted")
                                                .Build();

            var notifyContinuousChildActivityTrigger = TriggerBuilder.Create()
                                                       .WithIdentity("notifyContinuousChildActivityTrigger", "continuousChildActivity")
                                                       .WithSchedule(CronScheduleBuilder.DailyAtHourAndMinute(4, 0).InTimeZone(TimeZoneInfo.FindSystemTimeZoneById("US Mountain Standard Time")))
                                                       .ForJob("notifyContinuousChildActivityJob", "continuousChildActivity")
                                                       .Build();

            var notifySubscriptionRenewalTrigger = TriggerBuilder.Create()
                                                   .WithIdentity("notifySubscriptionRenewalTrigger", "subscription")
                                                   .WithSchedule(CronScheduleBuilder.DailyAtHourAndMinute(4, 30).InTimeZone(TimeZoneInfo.FindSystemTimeZoneById("US Mountain Standard Time")))
                                                   .ForJob("notifySubscriptionRenewalJob", "subscription")
                                                   .Build();

            // Send weekly payday notification trigger - at 10AM
            var sendWeeklyPaydayStatusTrigger = TriggerBuilder.Create()
                                                .WithIdentity("sendWeeklyPaydayStatusTrigger", "sendStatus")
                                                .WithSchedule(CronScheduleBuilder.AtHourAndMinuteOnGivenDaysOfWeek(10, 0, DayOfWeek.Thursday).InTimeZone(TimeZoneInfo.FindSystemTimeZoneById("Central Standard Time")))
                                                .ForJob("sendWeeklyPaydayStatusJob", "sendStatus")
                                                .Build();

            // Remind chore payment notification trigger -at 12PM
            var remindChorePaymentApprovalTrigger = TriggerBuilder.Create()
                                                    .WithIdentity("remindChorePaymentApprovalTrigger", "reminder")
                                                    .WithSchedule(CronScheduleBuilder.AtHourAndMinuteOnGivenDaysOfWeek(12, 0, DayOfWeek.Thursday).InTimeZone(TimeZoneInfo.FindSystemTimeZoneById("Central Standard Time")))
                                                    .ForJob("remindChorePaymentApprovalJob", "reminder")
                                                    .Build();

            // Now it's disapprove chore job after 24 hr of payday SMS  - at 10:00 AM Friday
            var makeWeeklyPaymentTrigger = TriggerBuilder.Create()
                                           .WithIdentity("makeWeeklyPaymentTrigger", "createChore")
                                           .WithSchedule(CronScheduleBuilder.AtHourAndMinuteOnGivenDaysOfWeek(10, 0, DayOfWeek.Friday).InTimeZone(TimeZoneInfo.FindSystemTimeZoneById("Central Standard Time")))
                                           .ForJob("makeWeeklyPaymentJob", "createChore")
                                           .Build();

            // renewSubscription trigger - at 11PM
            var renewSubscriptionTrigger = TriggerBuilder.Create()
                                           .WithIdentity("renewSubscriptionTrigger", "subscription")
                                           .WithSchedule(CronScheduleBuilder.DailyAtHourAndMinute(23, 0).InTimeZone(TimeZoneInfo.FindSystemTimeZoneById("US Mountain Standard Time")))
                                           .ForJob("renewSubscriptionJob", "subscription")
                                           .Build();


            // SMS Approval Jobs - reminder and cancel approval
            var remindSMSApprovalTrigger = TriggerBuilder.Create()
                                           .WithIdentity("remindSMSApprovalTrigger", "reminder")
                                           .WithSchedule(CronScheduleBuilder.CronSchedule("0 0 0/1 * * ? *").InTimeZone(TimeZoneInfo.FindSystemTimeZoneById("US Mountain Standard Time")))
                                           .ForJob("remindSMSApprovalJob", "reminder")
                                           .Build();

            var cancelNotRespondedSMSTrigger = TriggerBuilder.Create()
                                               .WithIdentity("cancelNotRespondedSMSTrigger", "reminder")
                                               .WithSchedule(CronScheduleBuilder.CronSchedule("0 0 0/1 * * ? *").InTimeZone(TimeZoneInfo.FindSystemTimeZoneById("US Mountain Standard Time")))
                                               .ForJob("cancelNotRespondedSMSJob", "reminder")
                                               .Build();

            // Azure Service Bus Job Trigger
            var coreproMessageTrigger = TriggerBuilder.Create()
                                        .WithIdentity("coreproMessageTrigger", "notification")
                                        .WithCronSchedule("0 0/5 * * * ?")
                                        //.StartNow()
                                        .ForJob("coreproMessageJob", "notification")
                                        .Build();

            //Cancel chore after 24 hour of cutoff time

            var cancelChoreTrigger = TriggerBuilder.Create()
                                     .WithIdentity("cancelChoreTrigger", "cancelChore")
                                     //.WithCronSchedule("0 0/2 * * * ?")
                                     .StartNow()
                                     .ForJob("cancelPandingPaydayRequest", "cancelChore")
                                     .Build();

            //Send -ve Balance Message Payday Not Proceeded

            var negativeBalancePaydayTrigger = TriggerBuilder.Create()
                                               .WithIdentity("negativeBalancePaydayTrigger", "cancelChore")
                                               .WithSchedule(CronScheduleBuilder.AtHourAndMinuteOnGivenDaysOfWeek(10, 0, DayOfWeek.Thursday).InTimeZone(TimeZoneInfo.FindSystemTimeZoneById("Central Standard Time")))
                                               .ForJob("SendMessagePaydayNotProceed", "cancelChore")
                                               .Build();

            // Schedule the job using the jobs and triggers
            // scheduler.ScheduleJob(dailyChoresJob, dailyChoresTrigger); // Client told to stop this job
            // scheduler.ScheduleJob(weeklyChoresJob, weeklyChoresTrigger); // Client told to stop this job
            scheduler.ScheduleJob(makeWeeklyPaymentJob, makeWeeklyPaymentTrigger);
            scheduler.ScheduleJob(sendWeeklyPaydayStatusJob, sendWeeklyPaydayStatusTrigger);
            scheduler.ScheduleJob(notifyIncompleteMemberEnrollmentJob, notifyIncompleteNewMemberEnrollmentTrigger);
            scheduler.ScheduleJob(notifyParentHasNotLoggedInJob, notifyParentHasNotLoggedInTrigger);
            scheduler.ScheduleJob(renewSubscriptionJob, renewSubscriptionTrigger);
            //scheduler.ScheduleJob(notifyChildHasNotLoggedInJob, notifyChildHasNotLoggedInTrigger);  // Client told to stop this job
            scheduler.ScheduleJob(notifyNoChoreCompletedJob, notifyNoChoreCompletedTrigger);
            scheduler.ScheduleJob(notifyContinuousChildActivityJob, notifyContinuousChildActivityTrigger);
            scheduler.ScheduleJob(notifySubscriptionRenewalJob, notifySubscriptionRenewalTrigger);
            scheduler.ScheduleJob(remindSMSApprovalJob, remindSMSApprovalTrigger);
            scheduler.ScheduleJob(cancelNotRespondedSMSJob, cancelNotRespondedSMSTrigger);
            scheduler.ScheduleJob(remindChorePaymentApprovalJob, remindChorePaymentApprovalTrigger);
            // scheduler.ScheduleJob(coreproMessageJob, coreproMessageTrigger);
            //scheduler.ScheduleJob(cancelPandingPaydayRequest, cancelChoreTrigger);
            //scheduler.ScheduleJob(SendMessagePaydayNotProceed, negativeBalancePaydayTrigger);
        }