Class: SpreeCmCommissioner::TicketTransfers::TransferGuest

Inherits:
Object
  • Object
show all
Defined in:
app/services/spree_cm_commissioner/ticket_transfers/transfer_guest.rb

Overview

Creates a new guest under the given line_item and user, copying event-specific data (seat, bib, block) from the source guest.

Constant Summary collapse

EVENT_DATA_ATTRIBUTES =
%i[event_id seat_number bib_number bib_prefix bib_index block_id entry_type].freeze

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.call(from_guest:, new_line_item:, new_user:) ⇒ Object



8
9
10
# File 'app/services/spree_cm_commissioner/ticket_transfers/transfer_guest.rb', line 8

def self.call(from_guest:, new_line_item:, new_user:)
  new.call(from_guest: from_guest, new_line_item: new_line_item, new_user: new_user)
end

Instance Method Details

#call(from_guest:, new_line_item:, new_user:) ⇒ Object



12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# File 'app/services/spree_cm_commissioner/ticket_transfers/transfer_guest.rb', line 12

def call(from_guest:, new_line_item:, new_user:)
  new_guest = from_guest.class.new(
    from_guest.slice(*EVENT_DATA_ATTRIBUTES).merge(
      line_item: new_line_item,
      user: new_user,
      token: SecureRandom.uuid,
      state: :active,
      public_metadata: { 'from_transfer' => true }
    )
  )

  from_guest.update!(state: :transferred, bib_index: nil)
  new_guest.save!
  new_guest
end