Class: RewardWorkers::SetUserBenefitExpiry

Inherits:
ApplicationWorker show all
Defined in:
app/workers/reward_workers/set_user_benefit_expiry.rb

Instance Method Summary collapse

Methods inherited from ApplicationWorker

unlimited_retry

Instance Method Details

#perform(first_user_id, last_user_id) ⇒ Object



13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# File 'app/workers/reward_workers/set_user_benefit_expiry.rb', line 13

def perform(first_user_id, last_user_id)
  User.where(id: first_user_id..last_user_id).find_each do |user|
    next if user.blank?

    points_expiry_date = Reward.points_expiry_date(user)
    next if points_expiry_date.blank?

    reminder_at = (points_expiry_date - 7.days).beginning_of_day

    user_benefit = UserBenefitExpiry.find_or_initialize_by(user_id: user.id)
    user_benefit.assign_attributes(
      total_points: user.get_credits,
      user_loyalty_id: user.user_loyalty&.id,
      expires_at: Time.use_zone(user.time_zone) { points_expiry_date.end_of_day },
      reminder_d7: reminder_at,
    )
    user_benefit.save!
  end
end