class Admission::ProfileField < ApplicationRecord
  include Fieldable

  enum field: {
    first_name: 9,
    last_name: 10,
    application_grade: 12,
    date_of_birth: 11,
    middle_name: 0,
    suffix: 1,
    nickname: 2,
    gender: 3,
    email: 4,
    cell_phone: 5,
    work_phone: 6,
    ethnicity: 7,
    race: 8
  }

  REQUIRED_FIELDS = fields.keys[0..2]

  belongs_to :application

  after_initialize :set_defaults_for_required_fields

  scope :ordered, -> { order(Arel.sql("FIELD(field, #{fields.values.join(', ')})")) }
  scope :with_display, -> { where(display: true) }

  private
    def set_defaults_for_required_fields
      return unless REQUIRED_FIELDS.include?(field)

      self.display = true
      self.required = true
    end
end
