module Base::AccountPaymentConfig
  extend ActiveSupport::Concern
  include Castable

  included do
    self.table_name = :AcctPaymentConfig
    self.primary_key = :APJCID

    cast_as_boolean :ACHAllow
    cast_as_boolean :CCAllow

    alias_attribute :id, :APJCID
    alias_attribute :school_id, :SchoolID
    alias_attribute :payment_type, :PaymentType
    alias_attribute :processor, :ProcessorID
    alias_attribute :enabled, :Enabled
    alias_attribute :primary_processor, :PrimaryProcessor
    alias_attribute :account_number, :AccountNumber
    alias_attribute :username, :Username
    alias_attribute :password, :Password
    alias_attribute :terminal_id, :TerminalID
    alias_attribute :terminal_type, :TerminalType
    alias_attribute :terminal_id2, :Terminal2ID
    alias_attribute :terminal_type2, :Terminal2Type
    alias_attribute :api_key, :APIKey
    alias_attribute :security_key, :SecurityKey
    alias_attribute :ach, :ACHAllow
    alias_attribute :ach_fee, :ACHFee
    alias_attribute :credit_card, :CCAllow
    alias_attribute :credit_card_fee, :CCFee
    alias_attribute :publishable_key, :PublishableKey

    before_create :set_defaults

    private
      def set_defaults
        self.SchoolID = 0 unless self.SchoolID
        self.PaymentType = 0 unless self.PaymentType
        self.ProcessorID = 0 unless self.ProcessorID
        self.Enabled = 0 unless self.Enabled
        self.PrimaryProcessor = 0 unless self.PrimaryProcessor
        self.AccountNumber = '' unless self.AccountNumber
        self.Username = '' unless self.Username
        self.Password = 0 unless self.Password
        self.TerminalID = 0 unless self.TerminalID
        self.TerminalType = 0 unless self.TerminalType
        self.Terminal2ID = 0 unless self.Terminal2ID
        self.Terminal2Type = 0 unless self.Terminal2Type
        self.APIKey = '' unless self.APIKey
        self.SecurityKey = '' unless self.SecurityKey
        self.ACHAllow = 0 unless self.ACHAllow
        self.ACHFee = '' unless self.ACHFee
        self.CCAllow = 0 unless self.CCAllow
        self.CCFee = '' unless self.CCFee
        self.PublishableKey = '' unless self.PublishableKey
      end
  end
end
