Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>2014-03-25 16:48:02 +0400
committerDmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>2014-03-25 16:48:02 +0400
commitd89130b0974782824fb11d4e0cc0fd9b12fe7cab (patch)
treee49166cf05debb04ba221ab6eb8f7f43ae11dd3b /app/services/event_create_service.rb
parentcce80d04fe0271709170222d3b5774c39203ea07 (diff)
Collect all event creation logic in one place called EventCreateService
Signed-off-by: Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>
Diffstat (limited to 'app/services/event_create_service.rb')
-rw-r--r--app/services/event_create_service.rb56
1 files changed, 56 insertions, 0 deletions
diff --git a/app/services/event_create_service.rb b/app/services/event_create_service.rb
new file mode 100644
index 00000000000..8ff4dad674c
--- /dev/null
+++ b/app/services/event_create_service.rb
@@ -0,0 +1,56 @@
+# EventCreateService class
+#
+# Used for creating events feed on dashboard after certain user action
+#
+# Ex.
+# EventCreateService.new.new_issue(issue, current_user)
+#
+class EventCreateService
+ def open_issue(issue, current_user)
+ create_event(issue, current_user, Event::CREATED)
+ end
+
+ def close_issue(issue, current_user)
+ create_event(issue, current_user, Event::CLOSED)
+ end
+
+ def reopen_issue(issue, current_user)
+ create_event(issue, current_user, Event::REOPENED)
+ end
+
+ def open_mr(merge_request, current_user)
+ create_event(merge_request, current_user, Event::CREATED)
+ end
+
+ def close_mr(merge_request, current_user)
+ create_event(merge_request, current_user, Event::CLOSED)
+ end
+
+ def reopen_mr(merge_request, current_user)
+ create_event(merge_request, current_user, Event::REOPENED)
+ end
+
+ def merge_mr(merge_request, current_user)
+ create_event(merge_request, current_user, Event::MERGED)
+ end
+
+ def open_milestone(milestone, current_user)
+ create_event(milestone, current_user, Event::CREATED)
+ end
+
+ def close_milestone(milestone, current_user)
+ create_event(milestone, current_user, Event::CLOSED)
+ end
+
+ private
+
+ def create_event(record, current_user, status)
+ Event.create(
+ project: record.project,
+ target_id: record.id,
+ target_type: record.class.name,
+ action: status,
+ author_id: current_user.id
+ )
+ end
+end