Class: RailsOnboarding::OnboardingMailerJob

Inherits:
ApplicationJob
  • Object
show all
Defined in:
lib/rails_onboarding/background_jobs.rb

Instance Method Summary collapse

Methods inherited from ApplicationJob

queue_name

Instance Method Details

#perform(user_id, email_type) ⇒ Object



206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
# File 'lib/rails_onboarding/background_jobs.rb', line 206

def perform(user_id, email_type)
  unless RailsOnboarding.action_mailer_configured?
    Rails.logger.warn "RailsOnboarding: ActionMailer not configured, skipping email"
    return
  end

  user = find_user(user_id)
  return unless user

  case email_type.to_sym
  when :welcome
    OnboardingMailer.welcome_email(user).deliver_now
  when :reminder
    # Only send reminder if onboarding is not completed
    OnboardingMailer.reminder_email(user).deliver_now unless user.onboarding_completed?
  when :completion
    OnboardingMailer.completion_email(user).deliver_now
  when :step_completed
    OnboardingMailer.step_completed_email(user).deliver_now
  else
    Rails.logger.warn "Unknown email type: #{email_type}"
  end
rescue StandardError => e
  Rails.logger.error "Failed to send onboarding email: #{e.message}"
  raise e if should_retry?
end