class EmployeeAdditionalGroup < ApplicationRecord
  include Base::EmployeeAdditionalGroup
  include Cacheable

  audited

  associations_for legacy: true do |a|
    a.belongs_to :school
  end

  has_many :fields, class_name: 'EmployeeAdditionalField', foreign_key: :USGID,
    dependent: :restrict_with_error, inverse_of: :group

  before_validation :set_order, on: :create

  validates :name, presence: true, length: { maximum: 16 }
  validates :description, length: { maximum: 64 }

  scope :ordered, -> { order(:order) }

  private
    def set_cache_keys
      self.cache_keys = ["school/#{school_id}/employee_additional_groups"]
    end

    def set_order
      next_item = school.employee_additional_groups.order('Sequence DESC').first
      self.order = next_item ? next_item.order + 1 : 0
    end
end
