summaryrefslogtreecommitdiff
path: root/app/services/issues/move_service.rb
diff options
context:
space:
mode:
Diffstat (limited to 'app/services/issues/move_service.rb')
-rw-r--r--app/services/issues/move_service.rb29
1 files changed, 25 insertions, 4 deletions
diff --git a/app/services/issues/move_service.rb b/app/services/issues/move_service.rb
index e2ab06ac332..935bd8a87f7 100644
--- a/app/services/issues/move_service.rb
+++ b/app/services/issues/move_service.rb
@@ -1,11 +1,20 @@
module Issues
class MoveService < Issues::BaseService
- def execute(issue_old, project_new)
- @issue_old = issue_old
- @issue_new = issue_old.dup
- @project_new = project_new
+ def initialize(project, current_user, params, issue)
+ super(project, current_user, params)
+
+ @issue_old = issue
+ @issue_new = @issue_old.dup
@project_old = @project
+ if params['move_to_project_id']
+ @project_new = Project.find(params['move_to_project_id'])
+ end
+ end
+
+ def execute
+ return unless move?
+
open_new_issue
rewrite_notes
close_old_issue
@@ -14,8 +23,20 @@ module Issues
@issue_new
end
+ def move?
+ return false unless @project_new
+ return false unless @issue_new
+ return false unless can_move?
+
+ true
+ end
+
private
+ def can_move?
+ true
+ end
+
def open_new_issue
@issue_new.project = @project_new
@issue_new.save!