Class: LoyaltyPrograms::MaintenanceWorker
- Inherits:
-
ApplicationWorker
- Object
- ApplicationWorker
- LoyaltyPrograms::MaintenanceWorker
- Defined in:
- app/workers/loyalty_programs/maintenance_worker.rb
Overview
This worker class is responsible for performing maintenance tasks on user loyalty levels within the loyalty program.
Instance Method Summary collapse
Methods inherited from ApplicationWorker
Instance Method Details
#perform(user_loyalty_id, session_id = nil) ⇒ Object
13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
# File 'app/workers/loyalty_programs/maintenance_worker.rb', line 13 def perform(user_loyalty_id, session_id = nil) user_loyalty = UserLoyalty.find_by(id: user_loyalty_id) expired_date_level = user_loyalty.expired_date_level return if user_loyalty.blank? return if session_id != user_loyalty.session_id today = Time.now_in_tz(user_loyalty.user.time_zone) # if old worker running with session_id nil and invalid date schedule if session_id.blank? && expired_date_level.present? && expired_date_level.to_date != today.to_date user_loyalty.renew_session_id user_loyalty.save if expired_date_level.to_date >= today.to_date LoyaltyPrograms::MaintenanceWorker.perform_at(expired_date_level.end_of_day, user_loyalty.id, user_loyalty.session_id) end return end if user_loyalty.qualified_to_downgrade_now? user_loyalty.downgrade else # extend date if user level not qualified to downgrade user_loyalty.start_date_level = today user_loyalty.renew_session_id user_loyalty.save if expired_date_level.present? && expired_date_level.to_date >= today.to_date LoyaltyPrograms::MaintenanceWorker.perform_at(expired_date_level.end_of_day, user_loyalty.id, user_loyalty.session_id) end end end |