houdini/app/models/campaign_gift_option.rb
2019-10-28 12:48:54 -05:00

34 lines
1 KiB
Ruby

# frozen_string_literal: true
# License: AGPL-3.0-or-later WITH Web-Template-Output-Additional-Permission-3.0-or-later
class CampaignGiftOption < ApplicationRecord
# :amount_one_time, #int (cents)
# :amount_recurring, #int (cents)
# :amount_dollars, #str, gets converted to amount
# :description, # text
# :name, # str
# :campaign, #assocation
# :quantity, #int (optional)
# :to_ship, #boolean
# :order, #int (optional)
# :hide_contributions #boolean (optional)
belongs_to :campaign
has_many :campaign_gifts
has_many :donations, through: :campaign_gifts
validates :name, presence: true
validates :campaign, presence: true
validates :amount_one_time, presence: true, numericality: { only_integer: true }, unless: :amount_recurring
validates :amount_recurring, presence: true, numericality: { only_integer: true }, unless: :amount_one_time
def total_gifts
campaign_gifts.count
end
def as_json(options = {})
h = super(options)
h[:total_gifts] = total_gifts
h
end
end