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?
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
|