diff --git a/app/controllers/admin/cfps_controller.rb b/app/controllers/admin/cfps_controller.rb index 119faf78..22bc3899 100644 --- a/app/controllers/admin/cfps_controller.rb +++ b/app/controllers/admin/cfps_controller.rb @@ -14,8 +14,10 @@ module Admin def create @cfp = @program.build_cfp(cfp_params) + send_mail_on_cfp_dates_updates = @cfp.notify_on_cfp_date_update? if @cfp.save + ConferenceCfpUpdateMailJob.perform_later(@conference) if send_mail_on_cfp_dates_updates redirect_to admin_conference_program_cfp_path, notice: 'Call for papers successfully created.' else @@ -31,7 +33,7 @@ module Admin send_mail_on_cfp_dates_updates = @cfp.notify_on_cfp_date_update? if @cfp.update_attributes(cfp_params) - Mailbot.send_on_cfp_dates_updates(@conference).deliver_later if send_mail_on_cfp_dates_updates + ConferenceCfpUpdateMailJob.perform_later(@conference) if send_mail_on_cfp_dates_updates redirect_to admin_conference_program_cfp_path(@conference.short_title), notice: 'Call for papers successfully updated.' else diff --git a/app/jobs/conference_cfp_update_mail_job.rb b/app/jobs/conference_cfp_update_mail_job.rb new file mode 100644 index 00000000..f732c068 --- /dev/null +++ b/app/jobs/conference_cfp_update_mail_job.rb @@ -0,0 +1,9 @@ +class ConferenceCfpUpdateMailJob < ActiveJob::Base + queue_as :default + + def perform(conference) + conference.subscriptions.each do |subscription| + Mailbot.conference_cfp_update_mail(conference, subscription.user).deliver_now + end + end +end diff --git a/app/mailers/mailbot.rb b/app/mailers/mailbot.rb index c10160d8..c112f9cb 100644 --- a/app/mailers/mailbot.rb +++ b/app/mailers/mailbot.rb @@ -71,13 +71,13 @@ class Mailbot < ActionMailer::Base conference.email_settings.program_schedule_public_body)) end - def send_on_cfp_dates_updates(conference) - User.joins(:subscriptions).merge(conference.subscriptions).each do |user| - build_email(conference, - user.email, - conference.email_settings.cfp_dates_updated_subject, - conference.email_settings.generate_email_on_conf_updates(conference, user, conference.email_settings.cfp_dates_updated_body)) - end + def conference_cfp_update_mail(conference, user) + mail(to: user.email, + from: conference.contact.email, + subject: conference.email_settings.cfp_dates_updated_subject, + body: conference.email_settings.generate_email_on_conf_updates(conference, + user, + conference.email_settings.cfp_dates_updated_body)) end def send_notification_email_for_comment(comment)