Use ActiveJob to send registration period update mails

This commit is contained in:
Henne Vogelsang 2016-04-21 15:38:44 +02:00
parent e758c30292
commit 4dd15dc62c
3 changed files with 18 additions and 9 deletions

View file

@ -12,7 +12,7 @@ module Admin
send_mail_on_reg_update = @conference.notify_on_registration_dates_changed?
if @registration_period.save
Mailbot.conference_registration_date_update_mail(@conference).deliver_later if send_mail_on_reg_update
ConferenceRegistrationDateUpdateMailJob.perform_later(@conference) if send_mail_on_reg_update
redirect_to admin_conference_registration_period_path(@conference.short_title),
notice: 'Registration Period successfully updated.'
else
@ -32,7 +32,7 @@ module Admin
send_mail_on_reg_update = @conference.notify_on_registration_dates_changed?
if @registration_period.update(registration_period_params)
Mailbot.conference_registration_date_update_mail(@conference).deliver_later if send_mail_on_reg_update
ConferenceRegistrationDateUpdateMailJob.perform_later(@conference) if send_mail_on_reg_update
redirect_to admin_conference_registration_period_path(@conference.short_title),
notice: 'Registration Period successfully updated.'
else

View file

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

View file

@ -44,13 +44,13 @@ class Mailbot < ActionMailer::Base
conference.email_settings.conference_dates_updated_body))
end
def conference_registration_date_update_mail(conference)
User.joins(:subscriptions).merge(conference.subscriptions).uniq.joins('INNER JOIN registrations ON registrations.user_id != users.id').merge(conference.registrations).each do |user|
build_email(conference,
user.email,
conference.email_settings.conference_registration_dates_updated_subject,
conference.email_settings.generate_email_on_conf_updates(conference, user, conference.email_settings.conference_registration_dates_updated_body))
end
def conference_registration_date_update_mail(conference, user)
mail(to: user.email,
from: conference.contact.email,
subject: conference.email_settings.conference_registration_dates_updated_subject,
body: conference.email_settings.generate_email_on_conf_updates(conference,
user,
conference.email_settings.conference_registration_dates_updated_body))
end
def send_email_on_venue_updated(conference)