# == Schema Information
#
# Table name: perms
#
#  id         :integer          not null, primary key
#  name       :string
#  created_at :datetime         not null
#  updated_at :datetime         not null
#

class Perm < ActiveRecord::Base
  include ValidationMessages

  # ================
  # = Associations =
  # ================

  has_and_belongs_to_many :users, join_table: :users_perms

  # ===============
  # = Validations =
  # ===============

  validates :name, presence: { message: PRESENCE_MESSAGE },
                   uniqueness: { message: UNIQUENESS_MESSAGE }


  # =================
  # = Class methods =
  # =================

  def self.add_orgs
    Perm.find_by(name: 'add_organisations')
  end

  def self.change_affiliation
    Perm.find_by(name: 'change_org_affiliation')
  end

  def self.grant_permissions
    Perm.find_by(name: 'grant_permissions')
  end

  def self.modify_templates
    Perm.find_by(name: 'modify_templates')
  end

  def self.modify_guidance
    Perm.find_by(name: 'modify_guidance')
  end

  def self.use_api
    Perm.find_by(name: 'use_api')
  end

  def self.change_org_details
    Perm.find_by(name: 'change_org_details')
  end

  def self.grant_api
    Perm.find_by(name: 'grant_api_to_orgs')
  end

  def self.review_plans
    Perm.find_by(name: 'review_org_plans')
  end
end
