/** * Helper to create a repeating schedulable job from an appointment * * @param appointment The appointment object to create the schedulable job for * @return a repeating period job for the scheduler */ private RepeatingPeriodSchedulableJob buildJob(Appointment appointment) { String eventTitle = String.format(SUBJECT, appointment.getExternalId(), appointment.getApptId()); MotechEvent event = new MotechEvent(eventTitle); return new RepeatingPeriodSchedulableJob( event, appointment.getReminderStartTime().toDate(), appointment.getAppointmentDate().toDate(), appointment.getReminderInterval(), true); }
/** * Add reminders for a specific appointment * * @param appointment Appointment object with the necessary fields populated */ @Override public void addReminders(Appointment appointment) { if (appointment.getReminderInterval() != null) { RepeatingPeriodSchedulableJob reminder = buildJob(appointment); this.schedulerService.safeScheduleRepeatingPeriodJob(reminder); } }
/** * Remove reminders for a specific appointment * * @param appointment Appointment object with the necessary fields populated */ @Override public void removeReminders(Appointment appointment) { this.schedulerService.safeUnscheduleAllJobs( String.format(SUBJECT, appointment.getExternalId(), appointment.getApptId())); }