dawarich/app/jobs/users/mailer_sending_job.rb
2025-09-11 00:19:34 +02:00

26 lines
730 B
Ruby

# frozen_string_literal: true
class Users::MailerSendingJob < ApplicationJob
queue_as :mailers
def perform(user_id, email_type, **options)
user = User.find(user_id)
if trial_related_email?(email_type) && user.active?
Rails.logger.info "Skipping #{email_type} email for user #{user_id} - user is already subscribed"
return
end
params = { user: user }.merge(options)
UsersMailer.with(params).public_send(email_type).deliver_later
rescue ActiveRecord::RecordNotFound
Rails.logger.warn "User with ID #{user_id} not found. Skipping #{email_type} email."
end
private
def trial_related_email?(email_type)
%w[trial_expires_soon trial_expired].include?(email_type.to_s)
end
end