Class: SpreeCmCommissioner::Cart::CreateGuest

Inherits:
Object
  • Object
show all
Includes:
Spree::ServiceModule::Base
Defined in:
app/services/spree_cm_commissioner/cart/create_guest.rb

Instance Method Summary collapse

Instance Method Details

#call(line_item:, options: {}) ⇒ Object



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

def call(line_item:, options: {})
  guest = line_item.guests.new(options)

  line_item.with_lock do
    next unless guest.save

    guest.save_and_move_to_next_stage
    bump_quantity_to_cover_guests(line_item) if need_to_bump_quantity?(line_item)
  end

  return failure(guest) unless guest.persisted?

  success(guest)
rescue StandardError => e
  CmAppLogger.error(
    label: 'SpreeCmCommissioner::Cart::CreateGuest#call',
    data: {
      error_class: e.class.name,
      error_message: e.message
    }
  )
  failure(guest)
end