diff --git a/app/controllers/admin/registration_periods_controller.rb b/app/controllers/admin/registration_periods_controller.rb index 727f15a8..07e9a735 100644 --- a/app/controllers/admin/registration_periods_controller.rb +++ b/app/controllers/admin/registration_periods_controller.rb @@ -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 diff --git a/app/jobs/conference_registration_date_update_mail_job.rb b/app/jobs/conference_registration_date_update_mail_job.rb new file mode 100644 index 00000000..9015d8af --- /dev/null +++ b/app/jobs/conference_registration_date_update_mail_job.rb @@ -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 diff --git a/app/mailers/mailbot.rb b/app/mailers/mailbot.rb index 901a70d6..06f24789 100644 --- a/app/mailers/mailbot.rb +++ b/app/mailers/mailbot.rb @@ -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)