Use ActiveJob to send conference date update mails

This commit is contained in:
Henne Vogelsang 2016-04-21 15:08:00 +02:00
parent 21280cd9d8
commit e758c30292
3 changed files with 17 additions and 8 deletions

View file

@ -85,7 +85,7 @@ module Admin
send_mail_on_conf_update = @conference.notify_on_dates_changed? send_mail_on_conf_update = @conference.notify_on_dates_changed?
if @conference.update_attributes(conference_params) if @conference.update_attributes(conference_params)
Mailbot.conference_date_update_mail(@conference).deliver_later if send_mail_on_conf_update ConferenceDateUpdateMailJob.perform_later(@conference) if send_mail_on_conf_update
redirect_to edit_admin_conference_path(id: @conference.short_title), redirect_to edit_admin_conference_path(id: @conference.short_title),
notice: 'Conference was successfully updated.' notice: 'Conference was successfully updated.'
else else

View file

@ -0,0 +1,9 @@
class ConferenceDateUpdateMailJob < ActiveJob::Base
queue_as :default
def perform(conference)
conference.subscriptions.each do |subscription|
Mailbot.conference_date_update_mail(conference, subscription.user).deliver_now
end
end
end

View file

@ -35,13 +35,13 @@ class Mailbot < ActionMailer::Base
conference.email_settings.generate_event_mail(event, conference.email_settings.confirmed_without_registration_body)) conference.email_settings.generate_event_mail(event, conference.email_settings.confirmed_without_registration_body))
end end
def conference_date_update_mail(conference) def conference_date_update_mail(conference, user)
User.joins(:subscriptions).merge(conference.subscriptions).each do |user| mail(to: user.email,
build_email(conference, from: conference.contact.email,
user.email, subject: conference.email_settings.conference_dates_updated_subject,
conference.email_settings.conference_dates_updated_subject, body: conference.email_settings.generate_email_on_conf_updates(conference,
conference.email_settings.generate_email_on_conf_updates(conference, user, conference.email_settings.conference_dates_updated_body)) user,
end conference.email_settings.conference_dates_updated_body))
end end
def conference_registration_date_update_mail(conference) def conference_registration_date_update_mail(conference)