class ScheduleReminderWorker

Public Class Methods

destroy_reminder(id) click to toggle source

To destroy reminder

# File app/workers/schedule_reminder_worker.rb, line 20
def self.destroy_reminder(id)
  jid = Sidekiq.redis { |conn| conn["#{self}:reminder-#{id}"] }
  Sidekiq::Status.cancel jid
end
perform_at(run_at, schedule_id) click to toggle source

To set time for reminder

Calls superclass method
# File app/workers/schedule_reminder_worker.rb, line 5
def self.perform_at(run_at, schedule_id)
  jid = super
  Sidekiq.redis { |conn| conn["#{self}:reminder-#{schedule_id}"] = jid }
end
reschedule(id, run_at) click to toggle source

To reschedule the reminder

# File app/workers/schedule_reminder_worker.rb, line 11
def self.reschedule(id, run_at)
  if Schedule.exists? id
    jid = Sidekiq.redis { |conn| conn["#{self}:reminder-#{id}"] }
    Sidekiq::Status.cancel jid
    perform_at(run_at, id)
  end
end

Public Instance Methods

perform(schedule_id) click to toggle source

To send reminder email

# File app/workers/schedule_reminder_worker.rb, line 26
def perform(schedule_id)
  @schedule = Schedule.find(schedule_id)
  @schedule.shared_with_users.find_each do |user|
    EventMailer.delay(queue: :mailer).reminder_email(@schedule.id, user.id)
  end
  Sidekiq.redis { |conn| conn.del "#{self.class}:reminder-#{schedule_id}" }
  if @schedule.frequency?
    @schedule.schedule_reminder
  end
end