Class: TicketService::Transaction::TicketTransactionAdapter

Inherits:
Object
  • Object
show all
Defined in:
app/services/ticket_service/transaction.rb

Overview

Adapter class to make TicketTransaction compatible with MyActiveMerchants::Gateway which expects reservation-like interface

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(ticket_transaction, omise_token) ⇒ TicketTransactionAdapter

Returns a new instance of TicketTransactionAdapter.



588
589
590
591
# File 'app/services/ticket_service/transaction.rb', line 588

def initialize(ticket_transaction, omise_token)
  @ticket_transaction = ticket_transaction
  @omise_token = omise_token
end

Instance Attribute Details

#omise_tokenObject (readonly)

Returns the value of attribute omise_token.



586
587
588
# File 'app/services/ticket_service/transaction.rb', line 586

def omise_token
  @omise_token
end

#ticket_transactionObject (readonly)

Returns the value of attribute ticket_transaction.



586
587
588
# File 'app/services/ticket_service/transaction.rb', line 586

def ticket_transaction
  @ticket_transaction
end

Instance Method Details

#cc_providerObject



623
624
625
# File 'app/services/ticket_service/transaction.rb', line 623

def cc_provider
  ticket_transaction.cc_provider&.to_sym
end

#chargesObject



636
637
638
# File 'app/services/ticket_service/transaction.rb', line 636

def charges
  ticket_transaction.charges
end

#customerObject



627
628
629
630
# File 'app/services/ticket_service/transaction.rb', line 627

def customer
  # For ticket transactions, we don't pre-create customers like reservations
  nil
end

#emailObject



598
599
600
# File 'app/services/ticket_service/transaction.rb', line 598

def email
  ticket_transaction.email
end

#errorsObject



632
633
634
# File 'app/services/ticket_service/transaction.rb', line 632

def errors
  ticket_transaction.errors
end

#firebase_tracking_keyObject

Provide Firebase tracking key for consistency with update_firebase method



664
665
666
# File 'app/services/ticket_service/transaction.rb', line 664

def firebase_tracking_key
  "ticket_transaction/#{ticket_transaction.id}"
end

#idObject

Delegate methods that MyActiveMerchants::Gateway expects



594
595
596
# File 'app/services/ticket_service/transaction.rb', line 594

def id
  ticket_transaction.id
end

Returns:

  • (Boolean)


654
655
656
# File 'app/services/ticket_service/transaction.rb', line 654

def paid_cc?
  false # New ticket transaction, not paid yet
end

#payment_success_urlObject



648
649
650
651
652
# File 'app/services/ticket_service/transaction.rb', line 648

def payment_success_url
  # Delegate to the actual TicketTransaction model method
  # This ensures consistency with the model's payment URLs
  ticket_transaction.payment_success_url
end

#restaurantObject



619
620
621
# File 'app/services/ticket_service/transaction.rb', line 619

def restaurant
  ticket_transaction.restaurant
end

#ticket_transaction_adapter?Boolean

Helper method to indicate this is an adapter for ticket transactions

Returns:

  • (Boolean)


659
660
661
# File 'app/services/ticket_service/transaction.rb', line 659

def ticket_transaction_adapter?
  true
end

#userObject



615
616
617
# File 'app/services/ticket_service/transaction.rb', line 615

def user
  ticket_transaction.user
end

#user_idObject



611
612
613
# File 'app/services/ticket_service/transaction.rb', line 611

def user_id
  ticket_transaction.user_id
end

#usernameObject



602
603
604
605
606
607
608
609
# File 'app/services/ticket_service/transaction.rb', line 602

def username
  # Cache guest and user to avoid law of demeter violations
  guest = ticket_transaction.guest
  user = ticket_transaction.user
  guest_name = guest&.name if guest
  user_name = user&.name if user
  guest_name || user_name || 'Guest'
end

#using_charge_directly_channel?Boolean

Returns:

  • (Boolean)


640
641
642
# File 'app/services/ticket_service/transaction.rb', line 640

def using_charge_directly_channel?
  true # Tickets are always charged immediately
end

#using_on_hold_channel?Boolean

Returns:

  • (Boolean)


644
645
646
# File 'app/services/ticket_service/transaction.rb', line 644

def using_on_hold_channel?
  false # Tickets don't use on-hold pattern
end