2019-05-03 06:17:27 +08:00
|
|
|
# frozen_string_literal: true
|
|
|
|
|
2019-04-10 22:53:52 +08:00
|
|
|
module Jobs
|
2019-10-02 12:01:53 +08:00
|
|
|
class ActivationReminderEmails < ::Jobs::Scheduled
|
2019-04-10 22:53:52 +08:00
|
|
|
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'",
|
|
|
|
)
|
2019-04-10 23:29:08 +08:00
|
|
|
.where(active: false, staged: false, user_custom_fields: { value: nil })
|
|
|
|
.where("users.created_at BETWEEN ? AND ?", 3.days.ago, 2.days.ago)
|
2019-04-10 22:53:52 +08:00
|
|
|
.find_each do |user|
|
|
|
|
user.custom_fields["activation_reminder"] = true
|
|
|
|
user.save_custom_fields
|
|
|
|
|
2021-11-25 15:34:39 +08:00
|
|
|
email_token =
|
|
|
|
user.email_tokens.create!(email: user.email, scope: EmailToken.scopes[:signup])
|
|
|
|
::Jobs.enqueue(
|
|
|
|
:user_email,
|
2022-02-05 07:43:53 +08:00
|
|
|
type: "activation_reminder",
|
2021-11-25 15:34:39 +08:00
|
|
|
user_id: user.id,
|
|
|
|
email_token: email_token.token,
|
|
|
|
)
|
2019-04-10 22:53:52 +08:00
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|