Class: SpreeCmCommissioner::Seats::ReleaseExpiredBlocks

Inherits:
Object
  • Object
show all
Defined in:
app/services/spree_cm_commissioner/seats/release_expired_blocks.rb

Instance Method Summary collapse

Instance Method Details

#callObject

Releases blocks that have expired (hold time exceeded). Runs every 5 minutes to keep expired holds from accumulating.

This is a PARTIAL release - only releases blocks where expired_at has passed. Complements BulkReleaseOnHoldBlocks which does weekly housekeeping.



9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# File 'app/services/spree_cm_commissioner/seats/release_expired_blocks.rb', line 9

def call
  expired_blocks = SpreeCmCommissioner::ReservedBlock
                   .on_hold
                   .where('expired_at <= ?', Time.current)

  count = expired_blocks.count

  # Transition all expired blocks to canceled status
  expired_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::ReleaseExpiredBlocks#call',
    data: {
      released_count: count,
      job_type: 'partial_release'
    }
  )
end