Class: Decidim::EmailNotificationGenerator
- Inherits:
-
Object
- Object
- Decidim::EmailNotificationGenerator
- Defined in:
- 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 don’t have duplicated notifications.
Instance Method Summary collapse
-
#generate ⇒ Object
Schedules a job for each recipient to send the email.
-
#initialize(event, event_class, resource, recipient_ids, extra) ⇒ EmailNotificationGenerator
constructor
Initializes the class.
Constructor Details
#initialize(event, event_class, resource, recipient_ids, 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. extra - a Hash with extra information to be included in the notification.
16 17 18 19 20 21 22 |
# File 'app/services/decidim/email_notification_generator.rb', line 16 def initialize(event, event_class, resource, recipient_ids, extra) @event = event @event_class = event_class @resource = resource @recipient_ids = recipient_ids @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.
28 29 30 31 32 33 34 35 |
# File 'app/services/decidim/email_notification_generator.rb', line 28 def generate return unless resource return unless event_class.types.include?(:email) recipient_ids.each do |recipient_id| send_email_to(recipient_id) end end |