summaryrefslogtreecommitdiff
path: root/app/services/members/unassign_issuables_service.rb
blob: 95e07deb761c4194120e2ba0c860834dae049c8e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# frozen_string_literal: true

module Members
  class UnassignIssuablesService
    attr_reader :user, :entity

    def initialize(user, entity)
      @user = user
      @entity = entity
    end

    def execute
      return unless entity && user

      project_ids = entity.is_a?(Group) ? entity.all_projects.select(:id) : [entity.id]

      user.issue_assignees.on_issues(Issue.in_projects(project_ids).select(:id)).delete_all
      user.merge_request_assignees.in_projects(project_ids).delete_all

      user.invalidate_cache_counts
    end
  end
end