Class: SpreeCmCommissioner::Seats::BlocksCanceler

Inherits:
Object
  • Object
show all
Defined in:
app/models/spree_cm_commissioner/seats/blocks_canceler.rb

Instance Method Summary collapse

Constructor Details

#initialize(order_id:, cancel_by: nil) ⇒ BlocksCanceler

Returns a new instance of BlocksCanceler.



4
5
6
7
# File 'app/models/spree_cm_commissioner/seats/blocks_canceler.rb', line 4

def initialize(order_id:, cancel_by: nil)
  @order_id = order_id
  @cancel_by = cancel_by
end

Instance Method Details

#cancel_blocks!Object

Cancels all reserved blocks associated with a given order.

Typically used when:

  • The order is canceled.

  • The user abandons the order before completing checkout.



14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# File 'app/models/spree_cm_commissioner/seats/blocks_canceler.rb', line 14

def cancel_blocks!
  order = Spree::Order.find(@order_id)

  ActiveRecord::Base.transaction do
    order.reserved_blocks.each do |reserved_block|
      block_label = reserved_block.block.label
      reserved_block.assign_attributes(
        status: :canceled,
        expired_at: nil,
        updated_by: @cancel_by
      )
      raise SpreeCmCommissioner::Seats::UnableToSaveReservedBlockRecordError, block_label unless reserved_block.save
    end
  end
end