class Users::ShixunsController < Users::BaseController
  def index
    shixuns = Users::ShixunService.new(observed_user, query_params).call

    @count = shixuns.count
    @shixuns = paginate(shixuns.includes(:first_tag_repertoire), special: observed_user.is_teacher?)

    ids = @shixuns.map(&:id)
    @finished_challenges_count_map = Game.joins(:myshixun).where(user_id: observed_user.id, status: 2)
                                       .where(myshixuns: { shixun_id: ids }).group('myshixuns.shixun_id').count
  end

  private

  def query_params
    params.permit(:category, :status, :sort_by, :sort_direction)
  end
end