Class: SpreeCmCommissioner::Seats::BulkReleaseOnHoldBlocks
- Inherits:
-
Object
- Object
- SpreeCmCommissioner::Seats::BulkReleaseOnHoldBlocks
- Defined in:
- app/services/spree_cm_commissioner/seats/bulk_release_on_hold_blocks.rb
Instance Method Summary collapse
-
#call ⇒ Object
Bulk releases stale on_hold blocks as a housekeeping job.
-
#initialize(cutoff_days: 7) ⇒ BulkReleaseOnHoldBlocks
constructor
A new instance of BulkReleaseOnHoldBlocks.
Constructor Details
#initialize(cutoff_days: 7) ⇒ BulkReleaseOnHoldBlocks
Returns a new instance of BulkReleaseOnHoldBlocks.
4 5 6 |
# File 'app/services/spree_cm_commissioner/seats/bulk_release_on_hold_blocks.rb', line 4 def initialize(cutoff_days: 7) @cutoff_days = cutoff_days end |
Instance Method Details
#call ⇒ Object
Bulk releases stale on_hold blocks as a housekeeping job. Runs weekly to catch any blocks that didn’t expire properly.
This is a FULL release - releases ALL on_hold blocks older than cutoff_days. Complements ReleaseExpiredBlocks which runs every 5 minutes.
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 |
# File 'app/services/spree_cm_commissioner/seats/bulk_release_on_hold_blocks.rb', line 13 def call cutoff_time = @cutoff_days.days.ago stale_blocks = SpreeCmCommissioner::ReservedBlock .on_hold .where('created_at < ?', cutoff_time) count = stale_blocks.count # Transition all stale blocks to canceled status stale_blocks.update_all( # rubocop:disable Rails/SkipsModelValidations status: :canceled, expired_at: nil, updated_by_id: nil, updated_at: Time.current ) CmAppLogger.log( label: 'SpreeCmCommissioner::Seats::BulkReleaseOnHoldBlocks#call', data: { released_count: count, cutoff_days: @cutoff_days, cutoff_time: cutoff_time, job_type: 'bulk_release' } ) end |