Class: CourseEnrollmentWorker
- Inherits:
-
Object
- Object
- CourseEnrollmentWorker
- Includes:
- Sidekiq::Job
- Defined in:
- app/workers/course_enrollment_worker.rb
Overview
Sidekiq worker: course enrollment.
Instance Method Summary collapse
Instance Method Details
#perform ⇒ Object
7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
# File 'app/workers/course_enrollment_worker.rb', line 7 def perform # Send 4 reminders, every 30 days, when there is no progress in a course for 30 days CourseEnrollment.active.each do |ce| last_updated_at = ce.customer_topics.maximum(:updated_at) # If there is any progress in the last 30 days, reset the reminders if last_updated_at > 30.days.ago # We use update_columns so it doesnt' update the updated_at field ce.update_columns(reminder_1: nil, reminder_2: nil, reminder_3: nil, reminder_4: nil) else # Otherwise, send a reminder depending on when was the last time we sent another reminder ce.send_progress_reminder(30) if last_updated_at < 30.days.ago && ce.reminder_1.nil? [60, 90, 120].each_with_index do |days, index| next unless last_updated_at < days.days.ago && ce.send("reminder_#{index + 2}").nil? && ce.send("reminder_#{index + 1}").present? && ce.send("reminder_#{index + 1}") < 30.days.ago # make sure we don't send another reminder within 30 days of the previous one ce.send_progress_reminder(days) break end end end end |