Commit cc773654883d34c70462eeeeb280453473c35e21

Authored by Dmitriy Zaporozhets
1 parent 0d41f6f0

Create services for issue close and reopen

Signed-off-by: Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>
app/services/git_push_service.rb
... ... @@ -86,10 +86,9 @@ class GitPushService
86 86 author = commit_user(commit)
87 87  
88 88 if !issues_to_close.empty? && is_default_branch
89   - Thread.current[:current_user] = author
90   - Thread.current[:current_commit] = commit
91   -
92   - issues_to_close.each { |i| i.close && i.save }
  89 + issues_to_close.each do |issue|
  90 + Issues::CloseService.new(project, author, {}).execute(issue, commit)
  91 + end
93 92 end
94 93  
95 94 # Create cross-reference notes for any other references. Omit any issues that were referenced in an
... ...
app/services/issues/base_service.rb
... ... @@ -3,11 +3,6 @@ module Issues
3 3  
4 4 private
5 5  
6   - # Create issue note with service comment like 'Status changed to closed'
7   - def create_note(issue)
8   - Note.create_status_change_note(issue, issue.project, current_user, issue.state, current_commit)
9   - end
10   -
11 6 def create_assignee_note(issue)
12 7 Note.create_assignee_change_note(issue, issue.project, current_user, issue.assignee)
13 8 end
... ...
app/services/issues/close_service.rb 0 → 100644
... ... @@ -0,0 +1,20 @@
  1 +module Issues
  2 + class CloseService < BaseService
  3 + def execute(issue, commit = nil)
  4 + if issue.close
  5 + notification_service.close_issue(issue, current_user)
  6 + event_service.close_issue(issue, current_user)
  7 + create_note(issue, commit)
  8 + execute_hooks(issue)
  9 + end
  10 +
  11 + issue
  12 + end
  13 +
  14 + private
  15 +
  16 + def create_note(issue, current_commit)
  17 + Note.create_status_change_note(issue, issue.project, current_user, issue.state, current_commit)
  18 + end
  19 + end
  20 +end
... ...
app/services/issues/reopen_service.rb 0 → 100644
... ... @@ -0,0 +1,19 @@
  1 +module Issues
  2 + class ReopenService < BaseService
  3 + def execute(issue)
  4 + if issue.reopen
  5 + event_service.reopen_issue(issue, current_user)
  6 + create_note(issue, commit)
  7 + execute_hooks(issue)
  8 + end
  9 +
  10 + issue
  11 + end
  12 +
  13 + private
  14 +
  15 + def create_note(issue)
  16 + Note.create_status_change_note(issue, issue.project, current_user, issue.state, nil)
  17 + end
  18 + end
  19 +end
... ...
app/services/issues/update_service.rb
... ... @@ -5,7 +5,7 @@ module Issues
5 5 issue.reset_events_cache
6 6  
7 7 if issue.is_being_reassigned?
8   - notification.reassigned_issue(issue, current_user)
  8 + notification_service.reassigned_issue(issue, current_user)
9 9 create_assignee_note(issue)
10 10 end
11 11  
... ...