private async Task <SchedulerReminder> GetReminder(Guid id)
        {
            Reminder reminder = await _reminderRepository.GetFirstOrDefaultAsync(
                predicate : t => t.Id == id);

            SchedulerReminder schedulerReminder = _mapper.Map <Reminder, SchedulerReminder>(reminder);

            return(schedulerReminder);
        }
 private void OnAddRememainderClicked(object sender, RoutedEventArgs e)
 {
     if (this.ReminderList != null)
     {
         var reminders = this.ReminderList.ItemsSource as IList;
         this.ReminderList.ItemContainerGenerator.StatusChanged += this.OnListViewItemGeneratorStatusChanged;
         if (reminders == null)
         {
             reminders = new ObservableCollection <SchedulerReminder>();
         }
         else if (reminders.Count == 5)
         {
             // Only maximum of 5 reminders allowed in editor window.
             return;
         }
         var newRemainder = new SchedulerReminder();
         reminders.Add(newRemainder);
         this.ReminderList.ItemsSource = reminders;
     }
 }
        public static async Task ScheduleReminder(this IScheduler scheduler, SchedulerReminder reminder)
        {
            JobKey     jobKey     = new JobKey(reminder.Id.ToString(), ConstantsStorage.REMINDER_GROUP);
            TriggerKey triggerKey = new TriggerKey(reminder.Id.ToString(), ConstantsStorage.REMINDER_GROUP);

            if (reminder.CronExpression != CronExpressionGenerator.TriggerInThePast)
            {
                IJobDetail job = JobBuilder.Create <NotificationJob>()
                                 .WithIdentity(jobKey)
                                 .UsingJobData(NotificationJob.JobDataKey, reminder.Id.ToString())
                                 .UsingJobData(NotificationJob.JobActivityTypeKey, ConstantsStorage.REMINDER)
                                 .Build();

                ITrigger trigger = TriggerBuilder.Create()
                                   .WithIdentity(triggerKey)
                                   .StartAt(DateTime.SpecifyKind(reminder.StartTime, DateTimeKind.Utc))
                                   .WithCronSchedule(reminder.CronExpression, ce => ce.InTimeZone(TimeZoneInfo.Utc))
                                   .Build();

                await scheduler.ScheduleJob(job, trigger);
            }
        }
        public async System.Threading.Tasks.Task RescheduleReminderById(Guid id)
        {
            SchedulerReminder schedulerReminder = await GetReminder(id);

            await _scheduler.RescheduleReminder(schedulerReminder);
        }
 public static async Task RescheduleReminder(this IScheduler scheduler, SchedulerReminder reminder)
 {
     await UnscheduleReminder(scheduler, reminder);
     await ScheduleReminder(scheduler, reminder);
 }
        public static async Task UnscheduleReminder(this IScheduler scheduler, SchedulerReminder reminder)
        {
            JobKey jobKey = new JobKey(reminder.Id.ToString(), ConstantsStorage.REMINDER_GROUP);

            await scheduler.DeleteJob(jobKey);
        }