diff options
Diffstat (limited to 'app/services/issues')
-rw-r--r-- | app/services/issues/base_service.rb | 5 | ||||
-rw-r--r-- | app/services/issues/close_service.rb | 20 | ||||
-rw-r--r-- | app/services/issues/reopen_service.rb | 19 | ||||
-rw-r--r-- | app/services/issues/update_service.rb | 2 |
4 files changed, 40 insertions, 6 deletions
diff --git a/app/services/issues/base_service.rb b/app/services/issues/base_service.rb index e04c1c6fb7a..2e1e1f7e0f0 100644 --- a/app/services/issues/base_service.rb +++ b/app/services/issues/base_service.rb @@ -3,11 +3,6 @@ module Issues private - # Create issue note with service comment like 'Status changed to closed' - def create_note(issue) - Note.create_status_change_note(issue, issue.project, current_user, issue.state, current_commit) - end - def create_assignee_note(issue) Note.create_assignee_change_note(issue, issue.project, current_user, issue.assignee) end diff --git a/app/services/issues/close_service.rb b/app/services/issues/close_service.rb new file mode 100644 index 00000000000..780bc8e4130 --- /dev/null +++ b/app/services/issues/close_service.rb @@ -0,0 +1,20 @@ +module Issues + class CloseService < BaseService + def execute(issue, commit = nil) + if issue.close + notification_service.close_issue(issue, current_user) + event_service.close_issue(issue, current_user) + create_note(issue, commit) + execute_hooks(issue) + end + + issue + end + + private + + def create_note(issue, current_commit) + Note.create_status_change_note(issue, issue.project, current_user, issue.state, current_commit) + end + end +end diff --git a/app/services/issues/reopen_service.rb b/app/services/issues/reopen_service.rb new file mode 100644 index 00000000000..743a5d6c4a8 --- /dev/null +++ b/app/services/issues/reopen_service.rb @@ -0,0 +1,19 @@ +module Issues + class ReopenService < BaseService + def execute(issue) + if issue.reopen + event_service.reopen_issue(issue, current_user) + create_note(issue, commit) + execute_hooks(issue) + end + + issue + end + + private + + def create_note(issue) + Note.create_status_change_note(issue, issue.project, current_user, issue.state, nil) + end + end +end diff --git a/app/services/issues/update_service.rb b/app/services/issues/update_service.rb index 4db9dee11d3..4d8d71b4c9f 100644 --- a/app/services/issues/update_service.rb +++ b/app/services/issues/update_service.rb @@ -5,7 +5,7 @@ module Issues issue.reset_events_cache if issue.is_being_reassigned? - notification.reassigned_issue(issue, current_user) + notification_service.reassigned_issue(issue, current_user) create_assignee_note(issue) end |