diff options
Diffstat (limited to 'app/services/boards/issues/move_service.rb')
-rw-r--r-- | app/services/boards/issues/move_service.rb | 75 |
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) |