diff options
author | Douwe Maan <douwe@gitlab.com> | 2018-04-18 09:33:44 +0000 |
---|---|---|
committer | Douwe Maan <douwe@gitlab.com> | 2018-04-18 09:33:44 +0000 |
commit | 84eeb9468c16f7192f9e3b911beeb6e472f4b907 (patch) | |
tree | 00a597d24e9ecd2972cd61a1b16c8abbb106cdae /app/services | |
parent | 40653b65b6a45df358ce40a278b08982891c541e (diff) | |
parent | ab650e7c6753d2f4c418496ad74dc87e243a5b2b (diff) | |
download | gitlab-ce-84eeb9468c16f7192f9e3b911beeb6e472f4b907.tar.gz |
Merge branch 'stuartnelson3/gitlab-ce-stn/issue-due-email' into 'master'
Email notification on issue due date
Closes #27500
See merge request gitlab-org/gitlab-ce!17985
Diffstat (limited to 'app/services')
-rw-r--r-- | app/services/notification_recipient_service.rb | 11 | ||||
-rw-r--r-- | app/services/notification_service.rb | 14 |
2 files changed, 23 insertions, 2 deletions
diff --git a/app/services/notification_recipient_service.rb b/app/services/notification_recipient_service.rb index b82d9c64296..83e59a649b6 100644 --- a/app/services/notification_recipient_service.rb +++ b/app/services/notification_recipient_service.rb @@ -203,10 +203,11 @@ module NotificationRecipientService attr_reader :action attr_reader :previous_assignee attr_reader :skip_current_user - def initialize(target, current_user, action:, previous_assignee: nil, skip_current_user: true) + def initialize(target, current_user, action:, custom_action: nil, previous_assignee: nil, skip_current_user: true) @target = target @current_user = current_user @action = action + @custom_action = custom_action @previous_assignee = previous_assignee @skip_current_user = skip_current_user end @@ -236,7 +237,13 @@ module NotificationRecipientService add_mentions(current_user, target: target) # Add the assigned users, if any - assignees = custom_action == :new_issue ? target.assignees : target.assignee + assignees = case custom_action + when :new_issue + target.assignees + else + target.assignee + end + # We use the `:participating` notification level in order to match existing legacy behavior as captured # in existing specs (notification_service_spec.rb ~ line 507) add_recipients(assignees, :participating, NotificationReason::ASSIGNED) if assignees diff --git a/app/services/notification_service.rb b/app/services/notification_service.rb index f94c76cf3ac..274161df946 100644 --- a/app/services/notification_service.rb +++ b/app/services/notification_service.rb @@ -373,6 +373,20 @@ class NotificationService end end + def issue_due(issue) + recipients = NotificationRecipientService.build_recipients( + issue, + issue.author, + action: 'due', + custom_action: :issue_due, + skip_current_user: false + ) + + recipients.each do |recipient| + mailer.send(:issue_due_email, recipient.user.id, issue.id, recipient.reason).deliver_later + end + end + protected def new_resource_email(target, method) |