class FinancialAidConfig < ApplicationRecord
  audited
  
  belongs_to :school, inverse_of: :financial_aid_config

  has_many :connection_logs, class_name: '::ConnectionLog', as: :associated, dependent: :destroy

  validate :payment_id_required, unless: :stripe_payment_id?
  validate :only_one_option_turned_on

  after_initialize :default_values

  after_create :set_school_questions

  private
    def default_values
      self.max_grant_value = 0
      self.max_cap_income = 0
    end

    def set_school_questions
      FinancialAidQuestion.all.each do |question|
        school.financial_aid_school_questions.create(question: question)
      end
    end

    def payment_id_required
      return unless school_voucher? || school_cover_fee?

      errors.add(:base, "Must add payment method to turn on waivers or cover fee.")
    end

    def only_one_option_turned_on
      return unless school_voucher? && school_cover_fee?

      errors.add(:base, "Only one option can be turned on at a time: either waivers or cover fee.")
    end
end
