#
#= roles モデル
# Authors:: Sumiyo Yamamoto
# Copyright:: Copyright (C) OrbusNeich Medical K.K.  2010.
#--
# date        name                   note
# 2010.2.26   Sumiyo Yamamoto        新規登録
#-------------------------------------------------------------------------------
#++
class Role < Comm::BaseModel::PermanentMaster
  has_many :roles_users, :dependent => :destroy
  has_many :users , :through=>:roles_users
  has_many :roles_menus, :dependent => :destroy
  has_many :menus, :through => :roles_menus

  include Comm::Module::MenuAuth::RelUpdate
  
  def validate
    ars = Role.disp_name_is(self.disp_name).valid.id_is_not(self.id)
    
    record_num = ars.length
    if record_num > 0
       ids = ars.collect{|ar| ar.id}
       emsg = ''
       emsg << EMJ0005
       emsg << "指定のグループ名は既に登録されています。"
       emsg << "ID:"+ids.inspect
       raise UserOperationError, emsg
    end
  end
  
  #== roles_menus取得処理
  #
  # 戻り値:: roles_menus
  #-----------------------------------------------------------------#++
  def rel_menus
    return roles_menus
  end

  #== roles_menus登録処理
  #
  # 戻り値:: 処理結果(true/false)
  #-----------------------------------------------------------------#++
  def create_rel_menu(menu_id = nil, auth_code = nil)
    result = true
    
    p = {:role_id => self.id, :menu_id => menu_id, :auth_code => auth_code}
    result = RolesMenu.new.create_mng(p)
    unless result
      errors.add_to_base(APEMJ0003 + EMD0004)
    end
    
    return result
  end
end
