#
#= userモデル用 特定検索
#
module Comm::BaseMasterModel::Module::UserSearch
  extend self
  #== トップユーザーポジション取得
  # ユーザーが所属しているトップポジションを取得する。
  #
  # 戻り値:: ユーザーポジション(ActiveRecord)
  #-----------------------------------------------------------------#++
  def top_position
    return UserPosition.set(MFIND_V).sassign('user_id', self.id).possort.all.first
  end

  #== トップ営業ポジション取得
  # ユーザーが所属している営業トップポジションを取得する。
  #
  # 戻り値:: ユーザーポジション(ActiveRecord)
  #-----------------------------------------------------------------#++
  def top_sales_position
    return UserPosition.set(MFIND_V).sassign('user_id', self.id).sales.possort.all.first
  end

  #== トップ営業部署取得
  # ユーザーが所属しているトップ営業部署を取得する。
  #
  # 戻り値:: ユーザーポジション(ActiveRecord)
  #-----------------------------------------------------------------#++
  def top_sales_section
    result = nil
    
    # トップ営業ポジション取得
    position = top_sales_position
    
    # グループ部署取得
    if position
      section_id = position.section_id
      if section_id
        result = Section.find(section_id).group
      end
    end
    
    return result
  end

  #== 全営業部署人数取得
  #
  # 戻り値:: 人数
  #-----------------------------------------------------------------#++
  def get_all_sales_user_num
    # 全営業ユーザーポジションを取得
    ups = UserPosition.sales.all
    
    # ユーザーIDでDISTINCT
    users = ups.dist('user_id')
    
    return users.length
  end

  #== 全営業部署人数取得(日付指定)
  #
  # 戻り値:: 人数
  #-----------------------------------------------------------------#++
  def get_all_sales_user_num_by_date(date = nil)
    # 部署・ユーザー履歴を検索
    logs = SectionsUsersLog.month(date).all
    
    # ユーザーIDでDISTINCT
    users = logs.dist('user_id')
    
    return users.length
  end
end