Class: MarkReservationAsPaidWorker

Inherits:
ApplicationWorker show all
Defined in:
app/workers/mark_reservation_as_paid_worker.rb

Overview

typed: ignore frozen_string_literal: true

Instance Method Summary collapse

Methods inherited from ApplicationWorker

unlimited_retry

Instance Method Details

#perform(id, transaction, reference_no = nil) ⇒ Object

Parameters:

  • id (Integer)
  • transaction (Hash)

    GB Primepay gbpReferenceNo

  • reference_no (String) (defaults to: nil)

    GB Primepay referenceNo

Raises:

  • (StandardError)


10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# File 'app/workers/mark_reservation_as_paid_worker.rb', line 10

def perform(id, transaction, reference_no = nil)
  id = id.with_indifferent_access if id.respond_to?(:with_indifferent_access)
  transaction = transaction.with_indifferent_access if transaction.respond_to?(:with_indifferent_access)

  charge = Externals::Omise::Charge.find_by omise_charge_id: transaction

  charge = Externals::Omise::Charge.find_by omise_charge_id: id if charge.blank?

  raise StandardError, 'Unknown transaction ID' if charge.blank?

  if reference_no.nil?
    # reference_no is for GB Primepay, omise_charge_id is for Omise
    reference_no = charge.reference_no.presence || charge.omise_charge_id
  end

  service = if charge.reservation_id.present?
              MarkReservationAsPaidService.new(id, transaction, reference_no)
            elsif charge.voucher_transaction_id.present?
              MarkVoucherTransactionAsPaidService.new(id, transaction, reference_no)
            elsif charge.ticket_transaction_id.present?
              PaymentProcessService::MarkAsPaid.new(id, transaction, reference_no)
            end

  return if service.execute!

  HH_LOGGER.error(service.error_message_simple, { id: id, transaction: transaction })
  raise
end