# frozen_string_literal: true

# track of all transactions payed using the given wallet
class WalletTransaction < ApplicationRecord
  include AmountConcern

  belongs_to :invoicing_profile
  belongs_to :wallet
  belongs_to :reservation
  # what was paid with the wallet
  has_one :invoice
  has_one :payment_schedule
  # how the wallet was credited
  has_one :invoice_item, as: :object, dependent: :destroy

  validates_inclusion_of :transaction_type, in: %w[credit debit]
  validates :invoicing_profile, :wallet, presence: true

  def user
    invoicing_profile.user
  end

  def original_invoice
    invoice_item.invoice
  end
end
