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