Class: Decidim::EmailNotificationGenerator
- Inherits:
-
Object
- Object
- Decidim::EmailNotificationGenerator
- Defined in:
- decidim-core/app/services/decidim/email_notification_generator.rb
Overview
This class handles system events affecting resources and generates a notification for each recipient by scheduling a new Decidim::NotificationMailer job for each of them. This way we can easily control which jobs fail and retry them, so that we do not have duplicated notifications.
Instance Method Summary collapse
-
#generate ⇒ Object
Schedules a job for each recipient to send the email.
-
#initialize(event, event_class, resource, followers, affected_users, extra) ⇒ EmailNotificationGenerator
constructor
Initializes the class.
Constructor Details
#initialize(event, event_class, resource, followers, affected_users, extra) ⇒ EmailNotificationGenerator
Initializes the class.
event - A String with the name of the event. event_class - A class that wraps the event. resource - an instance of a class implementing the Decidim::Resource concern. followers - a collection of Users that receive the notification because
they are following it
affected_users - a collection of Users that receive the notification because
they are affected by it
extra - a Hash with extra information to be included in the notification. rubocop:disable Metrics/ParameterLists
21 22 23 24 25 26 27 28 |
# File 'decidim-core/app/services/decidim/email_notification_generator.rb', line 21 def initialize(event, event_class, resource, followers, affected_users, extra) @event = event @event_class = event_class @resource = resource @followers = followers @affected_users = affected_users @extra = extra end |
Instance Method Details
#generate ⇒ Object
Schedules a job for each recipient to send the email. Returns nil if the resource is not resource or if it is not present.
Returns nothing.
35 36 37 38 39 40 41 |
# File 'decidim-core/app/services/decidim/email_notification_generator.rb', line 35 def generate return unless resource return unless event_class.types.include?(:email) send_to_followers send_to_affected_users end |