Commit cc773654883d34c70462eeeeb280453473c35e21
1 parent
0d41f6f0
Exists in
spb-stable
and in
3 other branches
Create services for issue close and reopen
Signed-off-by: Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>
Showing
5 changed files
with
43 additions
and
10 deletions
Show diff stats
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 | ... | ... |
| ... | ... | @@ -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 | ... | ... |
| ... | ... | @@ -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