Class: SpreeCmCommissioner::TicketTransfers::Accept

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

Instance Method Summary collapse

Instance Method Details

#call(ticket_transfer:, buyer:) ⇒ Object

Parameters:



8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# File 'app/services/spree_cm_commissioner/ticket_transfers/accept.rb', line 8

def call(ticket_transfer:, buyer:)
  validate_acceptance!(ticket_transfer, buyer)

  ActiveRecord::Base.transaction do
    lock_and_revalidate!(ticket_transfer, buyer)
    return success(ticket_transfer: ticket_transfer, order: ticket_transfer.order) if ticket_transfer.accepted? # rubocop:disable Rails/TransactionExitStatement

    order = create_transfer_order!(ticket_transfer, buyer)
    ticket_transfer.update!(state: :accepted, order: order, to_user: buyer)
    ticket_transfer.log_state_changes(user_id: buyer.id)
    create_payment!(ticket_transfer.order, ticket_transfer) if ticket_transfer.free_transfer?

    success(ticket_transfer: ticket_transfer, order: order)
  end
rescue StandardError => e
  handle_failure(ticket_transfer, e)
end