summaryrefslogtreecommitdiff
path: root/app/services/boards/issues/move_service.rb
diff options
context:
space:
mode:
Diffstat (limited to 'app/services/boards/issues/move_service.rb')
-rw-r--r--app/services/boards/issues/move_service.rb75
1 files changed, 7 insertions, 68 deletions
diff --git a/app/services/boards/issues/move_service.rb b/app/services/boards/issues/move_service.rb
index 56a7e228b10..99374fa01ae 100644
--- a/app/services/boards/issues/move_service.rb
+++ b/app/services/boards/issues/move_service.rb
@@ -2,13 +2,8 @@
module Boards
module Issues
- class MoveService < Boards::BaseService
- def execute(issue)
- issue_modification_params = issue_params(issue)
- return false if issue_modification_params.empty?
-
- move_single_issue(issue, issue_modification_params)
- end
+ class MoveService < Boards::BaseItemMoveService
+ extend ::Gitlab::Utils::Override
def execute_multiple(issues)
return execute_multiple_empty_result if issues.empty?
@@ -16,7 +11,7 @@ module Boards
handled_issues = []
last_inserted_issue_id = nil
count = issues.each.inject(0) do |moved_count, issue|
- issue_modification_params = issue_params(issue)
+ issue_modification_params = issuable_params(issue)
next moved_count if issue_modification_params.empty?
if last_inserted_issue_id
@@ -24,7 +19,7 @@ module Boards
end
last_inserted_issue_id = issue.id
- handled_issue = move_single_issue(issue, issue_modification_params)
+ handled_issue = move_single_issuable(issue, issue_modification_params)
handled_issues << present_issue_entity(handled_issue) if handled_issue
handled_issue && handled_issue.valid? ? moved_count + 1 : moved_count
end
@@ -54,51 +49,17 @@ module Boards
move_between_ids({ move_after_id: nil, move_before_id: id })
end
- def move_single_issue(issue, issue_modification_params)
- return unless can?(current_user, :update_issue, issue)
-
- update(issue, issue_modification_params)
- end
-
def board
@board ||= parent.boards.find(params[:board_id])
end
- def move_between_lists?
- moving_from_list.present? && moving_to_list.present? &&
- moving_from_list != moving_to_list
- end
-
- # rubocop: disable CodeReuse/ActiveRecord
- def moving_from_list
- return unless params[:from_list_id].present?
-
- @moving_from_list ||= board.lists.find_by(id: params[:from_list_id])
- end
- # rubocop: enable CodeReuse/ActiveRecord
-
- # rubocop: disable CodeReuse/ActiveRecord
- def moving_to_list
- return unless params[:to_list_id].present?
-
- @moving_to_list ||= board.lists.find_by(id: params[:to_list_id])
- end
- # rubocop: enable CodeReuse/ActiveRecord
-
def update(issue, issue_modification_params)
::Issues::UpdateService.new(issue.project, current_user, issue_modification_params).execute(issue)
end
- def issue_params(issue)
- attrs = {}
-
- if move_between_lists?
- attrs.merge!(
- add_label_ids: add_label_ids,
- remove_label_ids: remove_label_ids,
- state_event: issue_state
- )
- end
+ override :issuable_params
+ def issuable_params(issuable)
+ attrs = super
move_between_ids = move_between_ids(params)
if move_between_ids
@@ -109,28 +70,6 @@ module Boards
attrs
end
- def issue_state
- return 'reopen' if moving_from_list.closed?
- return 'close' if moving_to_list.closed?
- end
-
- def add_label_ids
- [moving_to_list.label_id].compact
- end
-
- # rubocop: disable CodeReuse/ActiveRecord
- def remove_label_ids
- label_ids =
- if moving_to_list.movable?
- moving_from_list.label_id
- else
- ::Label.on_board(board.id).pluck(:label_id)
- end
-
- Array(label_ids).compact
- end
- # rubocop: enable CodeReuse/ActiveRecord
-
def move_between_ids(move_params)
ids = [move_params[:move_after_id], move_params[:move_before_id]]
.map(&:to_i)