summaryrefslogtreecommitdiff
path: root/app
diff options
context:
space:
mode:
authorDouglas Barbosa Alexandre <dbalexandre@gmail.com>2016-02-16 21:01:14 -0200
committerDouglas Barbosa Alexandre <dbalexandre@gmail.com>2016-02-20 12:10:26 -0200
commit802bf6d012bf8edb8ea35429bd8b8cc4fe8e9bf1 (patch)
tree79660e9c36e03d3b98731664bd5b91cf10be9bac /app
parent9da03c45c9e313e8adb170ee9933bd94efbf747c (diff)
downloadgitlab-ce-802bf6d012bf8edb8ea35429bd8b8cc4fe8e9bf1.tar.gz
Create a pending task when an MR is assigned to someone
Diffstat (limited to 'app')
-rw-r--r--app/services/merge_requests/create_service.rb3
-rw-r--r--app/services/merge_requests/update_service.rb1
-rw-r--r--app/services/task_service.rb36
3 files changed, 33 insertions, 7 deletions
diff --git a/app/services/merge_requests/create_service.rb b/app/services/merge_requests/create_service.rb
index 009d5a6867e..b5691cdf44f 100644
--- a/app/services/merge_requests/create_service.rb
+++ b/app/services/merge_requests/create_service.rb
@@ -2,7 +2,7 @@ module MergeRequests
class CreateService < MergeRequests::BaseService
def execute
# @project is used to determine whether the user can set the merge request's
- # assignee, milestone and labels. Whether they can depends on their
+ # assignee, milestone and labels. Whether they can depends on their
# permissions on the target project.
source_project = @project
@project = Project.find(params[:target_project_id]) if params[:target_project_id]
@@ -18,6 +18,7 @@ module MergeRequests
merge_request.update_attributes(label_ids: label_params)
event_service.open_mr(merge_request, current_user)
notification_service.new_merge_request(merge_request, current_user)
+ task_service.new_merge_request(merge_request, current_user)
merge_request.create_cross_references!(current_user)
execute_hooks(merge_request)
end
diff --git a/app/services/merge_requests/update_service.rb b/app/services/merge_requests/update_service.rb
index 55322bf47bb..85b11def231 100644
--- a/app/services/merge_requests/update_service.rb
+++ b/app/services/merge_requests/update_service.rb
@@ -28,6 +28,7 @@ module MergeRequests
if merge_request.previous_changes.include?('assignee_id')
create_assignee_note(merge_request)
notification_service.reassigned_merge_request(merge_request, current_user)
+ task_service.reassigned_merge_request(merge_request, current_user)
end
if merge_request.previous_changes.include?('target_branch') ||
diff --git a/app/services/task_service.rb b/app/services/task_service.rb
index 57f68c61d00..329a041061a 100644
--- a/app/services/task_service.rb
+++ b/app/services/task_service.rb
@@ -11,9 +11,7 @@ class TaskService
# * creates a pending task for assignee if issue is assigned
#
def new_issue(issue, current_user)
- if issue.is_assigned? && issue.assignee != current_user
- create_task(issue.project, issue, current_user, issue.assignee, Task::ASSIGNED)
- end
+ new_issuable(issue, current_user)
end
# When close an issue we should:
@@ -29,9 +27,23 @@ class TaskService
# * creates a pending task for new assignee if issue is assigned
#
def reassigned_issue(issue, current_user)
- if issue.is_assigned?
- create_task(issue.project, issue, current_user, issue.assignee, Task::ASSIGNED)
- end
+ reassigned_issuable(issue, current_user)
+ end
+
+ # When create a merge request we should:
+ #
+ # * creates a pending task for assignee if merge request is assigned
+ #
+ def new_merge_request(merge_request, current_user)
+ new_issuable(merge_request, current_user)
+ end
+
+ # When we reassign an merge request we should:
+ #
+ # * creates a pending task for new assignee if merge request is assigned
+ #
+ def reassigned_merge_request(merge_request, current_user)
+ reassigned_issuable(merge_request, current_user)
end
# When we mark a task as done we should:
@@ -83,4 +95,16 @@ class TaskService
def pending_tasks_for(user, project, target)
user.tasks.pending.where(project: project, target: target)
end
+
+ def new_issuable(issuable, user)
+ if issuable.is_assigned? && issuable.assignee != user
+ create_task(issuable.project, issuable, user, issuable.assignee, Task::ASSIGNED)
+ end
+ end
+
+ def reassigned_issuable(issuable, user)
+ if issuable.is_assigned?
+ create_task(issuable.project, issuable, user, issuable.assignee, Task::ASSIGNED)
+ end
+ end
end