#
#= userモデル用Path関連モジュール
#-------------------------------------------------------------------------------
#++
module Comm::BaseMasterModel::Module::UserPath
  extend self
  include Comm::Module::IdPath
  
  DEFAULT_RANKING = 9999
  DEFAULT_PATH_RANK = 9999
  
  #== PATH配列取得
  #-----------------------------------------------------------------#++
  def get_path_as_array
    return path_to_array(self.path)
  end

  #== 階級ランク取得
  #-----------------------------------------------------------------#++
  def rranking
    r = rank
    result = r ? r.ranking : DEFAULT_RANKING
    return result
  end

  #== PATHランク取得
  #-----------------------------------------------------------------#++
  def pranking
    p = self.path
    result = p ? (p.count(PATH_TOKEN) - 1) : DEFAULT_PATH_RANK
    return result
  end

  #== PATH設定
  def refresh_path
    array = []
    gather_ancesters(self, array)
    set_path(array)
  end

  #== PATH生成
  def gather_ancesters(current, array)
    array.unshift(current.id)
    if current.user_id == 0
      return array
    elsif current.user_id == nil
      array.clear
      return array
    end
    gather_ancesters(current.parent, array)
  end

  #== 配列からPATH設定
  def set_path(array)
    self.path = array_to_path(array)
    self.save!
  end
end