Create services for issue close and reopen

Signed-off-by: Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>
This commit is contained in:
Dmitriy Zaporozhets 2014-04-02 15:38:24 +03:00
parent 0d41f6f0a3
commit cc77365488
No known key found for this signature in database
GPG Key ID: 627C5F589F467F17
5 changed files with 43 additions and 10 deletions

View File

@ -86,10 +86,9 @@ class GitPushService
author = commit_user(commit)
if !issues_to_close.empty? && is_default_branch
Thread.current[:current_user] = author
Thread.current[:current_commit] = commit
issues_to_close.each { |i| i.close && i.save }
issues_to_close.each do |issue|
Issues::CloseService.new(project, author, {}).execute(issue, commit)
end
end
# Create cross-reference notes for any other references. Omit any issues that were referenced in an

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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