1# frozen_string_literal: true 2 3class Groups::AutocompleteSourcesController < Groups::ApplicationController 4 feature_category :subgroups, [:members] 5 feature_category :team_planning, [:issues, :labels, :milestones, :commands] 6 feature_category :code_review, [:merge_requests] 7 8 urgency :low, [:merge_requests] 9 10 def members 11 render json: ::Groups::ParticipantsService.new(@group, current_user).execute(target) 12 end 13 14 def issues 15 render json: issuable_serializer.represent( 16 autocomplete_service.issues(confidential_only: params[:confidential_only], issue_types: params[:issue_types]), 17 parent_group: @group 18 ) 19 end 20 21 def merge_requests 22 render json: issuable_serializer.represent(autocomplete_service.merge_requests, parent_group: @group) 23 end 24 25 def labels 26 render json: autocomplete_service.labels_as_hash(target) 27 end 28 29 def commands 30 render json: autocomplete_service.commands(target) 31 end 32 33 def milestones 34 render json: autocomplete_service.milestones 35 end 36 37 private 38 39 def autocomplete_service 40 @autocomplete_service ||= ::Groups::AutocompleteService.new(@group, current_user, params) 41 end 42 43 def issuable_serializer 44 GroupIssuableAutocompleteSerializer.new 45 end 46 47 # rubocop: disable CodeReuse/ActiveRecord 48 def target 49 QuickActions::TargetService 50 .new(nil, current_user, group: @group) 51 .execute(params[:type], params[:type_id]) 52 end 53 # rubocop: enable CodeReuse/ActiveRecord 54end 55 56Groups::AutocompleteSourcesController.prepend_mod 57