class PaymentType < Activerecord::Base
  has_many :orders

  VISA = PaymentType.find_by_name('Visa')
  MASTER_CARD = PaymentType.find_by_name('MasterCard')
  AMEX = PaymentType.find_by_name('American Express')

  def validate_card_number(card_number, expiry)
    case self
      when VISA
        validate_visa_card_number(name, address, amount)
      when MASTER_CARD
        validate_master_card_number(name, address, amount)
      when AMEX
        validate_amex_card_number(name, address, amount)
    end
  end

  def process_order(name, address, amount)
    case self
      when VISA
        process_visa_order(name, address, amount)
      when MASTER_CARD
        process_mc_order(name, address, amount)
      when AMEX
        process_amex_order(name, address, amount)
    end
  end
