Class: ScheduleWorkers::EventDriven::ExpirationEvents::ExpiredPromotionBadgeDynamicPriceWorker

Inherits:
ApplicationWorker
  • Object
show all
Defined in:
app/workers/schedule_workers/event_driven/expiration_events/expired_promotion_badge_dynamic_price_worker.rb

Instance Method Summary collapse

Methods inherited from ApplicationWorker

unlimited_retry

Instance Method Details

#performObject

Performs the expiration event handling for package dynamic pricing which have promotion badge percentage.

This method is responsible for processing expired promotion badge percentage by checking their expiration dates against the previous day's date in the 'Asia/Bangkok' time zone. This worker runs every day at 00:00 (midnight) It retrieves the expired records and processes each one accordingly.



17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# File 'app/workers/schedule_workers/event_driven/expiration_events/expired_promotion_badge_dynamic_price_worker.rb', line 17

def perform
  yesterday = Time.use_zone('Asia/Bangkok') { Time.zone.yesterday }

  expired_restaurant_packages = HhPackage::RestaurantPackage.where(
    "EXISTS (
      SELECT 1 FROM hh_package_pricings
      WHERE hh_package_pricings.package_id = hh_package_restaurant_packages.package_id
      AND hh_package_pricings.promotion_badge_percentage IS NOT NULL
      AND hh_package_pricings.end_date = ?
    )", yesterday.to_date
  )

  expired_restaurant_packages.each do |expired_rp|
    process_expired_restaurant_package(expired_rp)
  end
rescue StandardError => e
  APMErrorHandler.report(e)
end