# License: AGPL-3.0-or-later WITH Web-Template-Output-Additional-Permission-3.0-or-later
class Donation < ActiveRecord::Base

	attr_accessible \
		: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: %(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