diff options
Diffstat (limited to 'app/services/issues/move_service.rb')
-rw-r--r-- | app/services/issues/move_service.rb | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/app/services/issues/move_service.rb b/app/services/issues/move_service.rb index 4418b4eb2bf..e210e6a2362 100644 --- a/app/services/issues/move_service.rb +++ b/app/services/issues/move_service.rb @@ -2,6 +2,8 @@ module Issues class MoveService < Issuable::Clone::BaseService + extend ::Gitlab::Utils::Override + MoveError = Class.new(StandardError) def execute(issue, target_project) @@ -47,6 +49,7 @@ module Issues .sent_notifications.update_all(project_id: new_entity.project_id, noteable_id: new_entity.id) end + override :update_old_entity def update_old_entity super @@ -54,6 +57,13 @@ module Issues mark_as_moved end + override :update_new_entity + def update_new_entity + super + + copy_contacts + end + def create_new_entity new_params = { id: nil, @@ -99,6 +109,13 @@ module Issues target_issue_links.update_all(target_id: new_entity.id) end + def copy_contacts + return unless Feature.enabled?(:customer_relations, original_entity.project.root_ancestor) + return unless original_entity.project.root_ancestor == new_entity.project.root_ancestor + + new_entity.customer_relations_contacts = original_entity.customer_relations_contacts + end + def notify_participants notification_service.async.issue_moved(original_entity, new_entity, @current_user) end |