class SchoolGrade < ApplicationRecord
  audited

  DEFAULTS = {
    0 => 'Kindergarten',
    1 => 'Preschool',
    2 => 'PK5',
    3 => 'PK4',
    4 => 'PK3',
    5 => 'Daycare3',
    6 => 'Daycare2',
    7 => 'Daycare1',
    8 => 'Infant2',
    9 => 'Infant1',
    10 => 'Homeschool',
    11 => '1st',
    12 => '2nd',
    13 => '3rd',
    14 => '4th',
    15 => '5th',
    16 => '6th',
    17 => '7th',
    18 => '8th',
    19 => 'Freshman',
    20 => 'Sophomore',
    21 => 'Junior',
    22 => 'Senior',
    23 => 'Post Grad 1',
    24 => 'Post Grad 2',
    25 => 'Post Grad 3',
    26 => 'Post Grad 4'
  }

  belongs_to :school

  before_save :strip_invalid_characters

  scope :active, -> { where(active: true) }

  def self.legacy_mapping
    grades = {}
    (-10..16).each do |number|
      grades[number] = if number.negative?
        number.abs
      elsif number.positive?
        number + 10
      else
        number
      end
    end

    grades
  end

  def self.legacy_defaults
    defaults = {}
    DEFAULTS.each do |key, value|
      defaults["GL_#{key}"] = defaults["EGL_#{key}"] = value
    end

    defaults
  end

  private
    def strip_invalid_characters
      self.name = name.tr("'/", '')
      self.external = external.tr("'/", '')
    end
end
