# 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 Donation < ApplicationRecord # :date, # datetime (when this donation was made) # :amount, # int (in cents) # :recurring, # bool # :anonymous, # bool # :email, # str (cached email of the donor) # :designation, # text # :dedication, # text # :comment, # text # :origin_url, # text # :nonprofit_id, :nonprofit, # :card_id, :card, # Card with which any charges were made # :supporter_id, :supporter, # :profile_id, :profile, # :campaign_id, :campaign, # :payment_id, :payment, # :event_id, :event, # :direct_debit_detail_id, :direct_debit_detail, # :payment_provider validates :amount, presence: true, numericality: { only_integer: true } validates :supporter, presence: true validates :nonprofit, presence: true validates_associated :charges validates :payment_provider, inclusion: { in: %w[credit_card sepa] }, allow_blank: true has_many :charges has_many :campaign_gifts, dependent: :destroy has_many :campaign_gift_options, through: :campaign_gifts has_many :activities, as: :attachment, dependent: :destroy has_many :payments has_one :recurring_donation has_one :payment has_one :offsite_payment has_one :tracking belongs_to :supporter belongs_to :card belongs_to :direct_debit_detail belongs_to :profile belongs_to :nonprofit belongs_to :campaign belongs_to :event scope :anonymous, -> { where(anonymous: true) } end