# 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 StripeRefund < ApplicationRecord include Model::SubtransactionPaymentable belongs_to :payment delegate :gross_amount, :net_amount, :fee_total, to: :payment delegate :currency, to: :nonprofit def stripe_id payment.refund.stripe_refund_id end concerning :JBuilder do # rubocop:disable Metrics/BlockLength included do setup_houid :striperef end def to_builder(*expand) # rubocop:disable Metrics/AbcSize init_builder(*expand) do |json| json.object 'stripe_transaction_refund' 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.stripe_id stripe_id json.type 'payment' json.add_builder_expansion :nonprofit, :supporter, :subtransaction json.add_builder_expansion :trx, json_attribute: :transaction end end def to_id ::Jbuilder.new do |json| json.(self, :id) json.object 'stripe_transaction_refund' json.type 'payment' end end def publish_created Houdini.event_publisher.announce( :stripe_transaction_refund_created, to_event('stripe_transaction_refund.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( :stripe_transaction_refund_updated, to_event('stripe_transaction_refund.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( :stripe_transaction_refund_deleted, to_event('stripe_transaction_refund.deleted', :nonprofit, :trx, :supporter, :subtransaction).attributes! ) Houdini.event_publisher.announce( :payment_deleted, to_event( 'payment.deleted', :nonprofit, :trx, :supporter, :subtransaction ).attributes! ) end end end