Class: LoyaltyPrograms::ReminderWorker

Inherits:
ApplicationWorker show all
Defined in:
app/workers/loyalty_programs/reminder_worker.rb

Instance Method Summary collapse

Methods inherited from ApplicationWorker

unlimited_retry

Instance Method Details

#perform(user_loyalty_id) ⇒ Object



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

def perform(user_loyalty_id)
  user_loyalty = UserLoyalty.find_by(id: user_loyalty_id)
  expired_date_level = user_loyalty.expired_date_level
  return if user_loyalty.blank?
  return if expired_date_level.blank?

  today = Time.now_in_tz(user_loyalty.user.time_zone)
  reminder_at = (expired_date_level - 1.month).end_of_day

  if user_loyalty.no_booking_in_current_level? && reminder_at.to_date == today.to_date && !user_loyalty.hunger?
    Netcore::LoyaltyWorker.perform_in(
      Netcore::LoyaltyWorker::DELAY, :maintain_user_level, user_loyalty.user_id
    )
  elsif reminder_at.to_date >= today.to_date
    LoyaltyPrograms::ReminderWorker.perform_at(reminder_at, user_loyalty.id)
  end
end