- Implement comprehensive email notification system for ticket purchases and event reminders - Add event reminder job with configurable scheduling - Enhance ticket mailer with QR code generation and proper formatting - Update order model with email delivery tracking - Add comprehensive test coverage for all email functionality - Configure proper mailer settings and disable annotations - Update backlog to reflect completed email features 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
45 lines
1.1 KiB
Ruby
45 lines
1.1 KiB
Ruby
class EventReminderSchedulerJob < ApplicationJob
|
|
queue_as :default
|
|
|
|
def perform
|
|
schedule_weekly_reminders
|
|
schedule_daily_reminders
|
|
schedule_day_of_reminders
|
|
end
|
|
|
|
private
|
|
|
|
def schedule_weekly_reminders
|
|
# Find events starting in exactly 7 days
|
|
target_date = 7.days.from_now.beginning_of_day
|
|
events = Event.published
|
|
.where(start_time: target_date..(target_date + 1.day))
|
|
|
|
events.find_each do |event|
|
|
EventReminderJob.perform_later(event.id, 7)
|
|
end
|
|
end
|
|
|
|
def schedule_daily_reminders
|
|
# Find events starting in exactly 1 day (tomorrow)
|
|
target_date = 1.day.from_now.beginning_of_day
|
|
events = Event.published
|
|
.where(start_time: target_date..(target_date + 1.day))
|
|
|
|
events.find_each do |event|
|
|
EventReminderJob.perform_later(event.id, 1)
|
|
end
|
|
end
|
|
|
|
def schedule_day_of_reminders
|
|
# Find events starting today
|
|
target_date = Time.current.beginning_of_day
|
|
events = Event.published
|
|
.where(start_time: target_date..(target_date + 1.day))
|
|
|
|
events.find_each do |event|
|
|
EventReminderJob.perform_later(event.id, 0)
|
|
end
|
|
end
|
|
end
|