# frozen_string_literal: true module Jobs class ActivationReminderEmails < ::Jobs::Scheduled every 2.hours def execute(args) User .joins( "LEFT JOIN user_custom_fields ON users.id = user_id AND user_custom_fields.name = 'activation_reminder'", ) .where(active: false, staged: false, user_custom_fields: { value: nil }) .where("users.created_at BETWEEN ? AND ?", 3.days.ago, 2.days.ago) .find_each do |user| user.custom_fields["activation_reminder"] = true user.save_custom_fields email_token = user.email_tokens.create!(email: user.email, scope: EmailToken.scopes[:signup]) ::Jobs.enqueue( :user_email, type: "activation_reminder", user_id: user.id, email_token: email_token.token, ) end end end end