summaryrefslogtreecommitdiff
path: root/app/services/releases/base_service.rb
diff options
context:
space:
mode:
Diffstat (limited to 'app/services/releases/base_service.rb')
-rw-r--r--app/services/releases/base_service.rb28
1 files changed, 25 insertions, 3 deletions
diff --git a/app/services/releases/base_service.rb b/app/services/releases/base_service.rb
index 7fb59dad508..5d6cb372653 100644
--- a/app/services/releases/base_service.rb
+++ b/app/services/releases/base_service.rb
@@ -58,7 +58,7 @@ module Releases
end
def milestones
- return [] unless param_for_milestone_titles_provided?
+ return [] unless param_for_milestones_exists?
strong_memoize(:milestones) do
MilestonesFinder.new(
@@ -67,22 +67,44 @@ module Releases
project_ids: Array(project.id),
group_ids: Array(project_group_id),
state: 'all',
- title: params[:milestones]
+ title: params[:milestones],
+ ids: params[:milestone_ids]
).execute
end
end
- def inexistent_milestones
+ def inexistent_milestone_titles
return [] unless param_for_milestone_titles_provided?
existing_milestone_titles = milestones.map(&:title)
+
Array(params[:milestones]) - existing_milestone_titles
end
+ def inexistent_milestone_ids
+ return [] unless param_for_milestone_ids_provided?
+
+ existing_milestone_ids = milestones.map(&:id)
+
+ Array(params[:milestone_ids]) - existing_milestone_ids
+ end
+
def param_for_milestone_titles_provided?
!!params[:milestones]
end
+ def param_for_milestone_ids_provided?
+ !!params[:milestone_ids]
+ end
+
+ def param_for_milestones_provided?
+ param_for_milestone_titles_provided? || param_for_milestone_ids_provided?
+ end
+
+ def param_for_milestones_exists?
+ params[:milestones].present? || params[:milestone_ids].present?
+ end
+
def execute_hooks(release, action = 'create')
release.execute_hooks(action)
end