# frozen_string_literal: true # License: AGPL-3.0-or-later WITH WTO-AP-3.0-or-later # Full license explanation at https://github.com/houdiniproject/houdini/blob/master/LICENSE class OfflineTransactionDispute < ApplicationRecord include Model::SubtransactionPaymentable belongs_to :payment delegate :gross_amount, :net_amount, :fee_total, to: :payment delegate :currency, to: :nonprofit # rubocop:disable Metrics/BlockLength concerning :JBuilder do included do setup_houid :offtrxdspt end # rubocop:disable Metrics/AbcSize def to_builder(*expand) init_builder(*expand) do |json| json.object 'offline_transaction_dispute' json.gross_amount do json.cents gross_amount json.currency currency end json.net_amount do json.cents net_amount json.currency currency end json.fee_total do json.cents fee_total json.currency currency end json.created payment.date.to_i json.type 'payment' json.add_builder_expansion :nonprofit, :supporter, :subtransaction json.add_builder_expansion :trx, json_attribute: :transaction end end # rubocop:enable Metrics/AbcSize def to_id ::Jbuilder.new do |json| json.(self, :id) json.object 'offline_transaction_dispute' json.type 'payment' end end def publish_created Houdini.event_publisher.announce( :offline_transaction_dispute_created, to_event('offline_transaction_dispute.created', :nonprofit, :trx, :supporter, :subtransaction).attributes! ) Houdini.event_publisher.announce( :payment_created, to_event('payment.created', :nonprofit, :trx, :supporter, :subtransaction).attributes! ) end def publish_updated Houdini.event_publisher.announce( :offline_transaction_dispute_updated, to_event('offline_transaction_dispute.updated', :nonprofit, :trx, :supporter, :subtransaction).attributes! ) Houdini.event_publisher.announce( :payment_updated, to_event('payment.updated', :nonprofit, :trx, :supporter, :subtransaction).attributes! ) end def publish_deleted Houdini.event_publisher.announce( :offline_transaction_dispute_deleted, to_event('offline_transaction_dispute.deleted', :nonprofit, :trx, :supporter, :subtransaction).attributes! ) Houdini.event_publisher.announce( :payment_deleted, to_event('payment.deleted', :nonprofit, :trx, :supporter, :subtransaction).attributes! ) end end # rubocop:enable Metrics/BlockLength end