summaryrefslogtreecommitdiff
path: root/app/controllers/concerns/groups_tree.rb
blob: 0420f773b26be8b0daa5ee748ea08975b0aa5d95 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
module GroupsTree
  def find_groups(parent, all_available: true)
    groups =
      if parent && Group.supports_nested_groups?
        if can?(current_user, :read_group, parent)
          GroupsFinder.new(current_user,
                           parent: parent,
                           all_available: all_available,
                           all_children_for_parent: params[:filter_groups].present?).execute
        else
          Group.none
        end
      else
        GroupsFinder.new(current_user, all_available: all_available).execute
      end

    groups = groups.search(params[:filter_groups]) if params[:filter_groups].present?
    groups = groups.includes(:route)
    groups = groups.sort(@sort = params[:sort])
    groups.page(params[:page])
  end
end