Welcome to mirror list, hosted at ThFree Co, Russian Federation.

base_service.rb « milestone_service « widgets « work_items « services « app - gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: f373e6daea3b96a19fc2adfa1061f20173a0f0b8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
# frozen_string_literal: true

module WorkItems
  module Widgets
    module MilestoneService
      class BaseService < WorkItems::Widgets::BaseService
        private

        def handle_milestone_change(params:)
          return unless params.present? && params.key?(:milestone_id)

          unless has_permission?(:set_work_item_metadata)
            params.delete(:milestone_id)
            return
          end

          if params[:milestone_id].nil?
            work_item.milestone = nil

            return
          end

          project = work_item.project
          milestone = MilestonesFinder.new({
                                             project_ids: [project.id],
                                             group_ids: project.group&.self_and_ancestors&.select(:id),
                                             ids: [params[:milestone_id]]
                                           }).execute.first

          if milestone
            work_item.milestone = milestone
          else
            params.delete(:milestone_id)
          end
        end
      end
    end
  end
end