diff --git a/app/controllers/admin/callforpapers_controller.rb b/app/controllers/admin/callforpapers_controller.rb index bc7b2fd2..b97bebb0 100644 --- a/app/controllers/admin/callforpapers_controller.rb +++ b/app/controllers/admin/callforpapers_controller.rb @@ -10,7 +10,21 @@ class Admin::CallforpapersController < ApplicationController def update @cfp = @conference.call_for_papers + @cfp.assign_attributes(params[:call_for_papers]) + notify_on_schedule_public = @cfp.schedule_public_changed? && @cfp.schedule_public\ + && @conference.email_settings.send_on_call_for_papers_schedule_public\ + && !@conference.email_settings.call_for_papers_schedule_public_subject.blank?\ + && !@conference.email_settings.call_for_papers_schedule_public_template.blank? + + notify_on_cfp_date_update = !@cfp.end_date.blank? && !@cfp.start_date.blank?\ + && (@cfp.start_date_changed? || @cfp.end_date_changed?)\ + && @conference.email_settings.send_on_call_for_papers_dates_updates\ + && !@conference.email_settings.call_for_papers_dates_updates_subject.blank?\ + && !@conference.email_settings.call_for_papers_dates_updates_template.blank? + if @cfp.update_attributes(params[:call_for_papers]) + Mailbot.delay.send_on_call_for_papers_dates_updates(@conference) if notify_on_cfp_date_update + Mailbot.delay.send_on_schedule_public(@conference) if notify_on_schedule_public redirect_to(admin_conference_callforpapers_path( id: @conference.short_title), notice: 'Call for Papers was successfully updated.') diff --git a/app/mailers/mailbot.rb b/app/mailers/mailbot.rb index 398d0c98..fd7c9d62 100644 --- a/app/mailers/mailbot.rb +++ b/app/mailers/mailbot.rb @@ -5,7 +5,7 @@ class Mailbot < ActionMailer::Base build_email(conference, person.email, conference.email_settings.registration_subject, - conference.email_settings.generate_registration_email(conference, person)) + conference.email_settings.generate_email_on_conf_updates(conference, person, conference.email_settings.registration_email_template)) end def acceptance_mail(event) @@ -41,7 +41,7 @@ class Mailbot < ActionMailer::Base build_email(conference, user.user.email, conference.email_settings.updated_conference_dates_subject, - conference.email_settings.generate_conference_date_update_mail(conference, user)) + conference.email_settings.generate_email_on_conf_updates(conference, user, conference.email_settings.updated_conference_dates_template)) end end @@ -50,16 +50,34 @@ class Mailbot < ActionMailer::Base build_email(conference, user.user.email, conference.email_settings.updated_conference_registration_dates_subject, - conference.email_settings.generate_conference_registration_date_update_mail(conference, user)) + conference.email_settings.generate_email_on_conf_updates(conference, user, conference.email_settings.updated_conference_registration_dates_template)) end end def send_email_on_venue_update(conference) conference.registrations.each do |user| build_email(conference, - user.email, + user.user.email, conference.email_settings.venue_update_subject, - conference.email_settings.generate_send_email_on_venue_update(conference, user)) + conference.email_settings.generate_email_on_conf_updates(conference, user, conference.email_settings.venue_update_template)) + end + end + + def send_on_schedule_public(conference) + conference.registrations.each do |user| + build_email(conference, + user.user.email, + conference.email_settings.call_for_papers_schedule_public_subject, + conference.email_settings.generate_email_on_conf_updates(conference, user, conference.email_settings.call_for_papers_schedule_public_template)) + end + end + + def send_on_call_for_papers_dates_updates(conference) + conference.registrations.each do |user| + build_email(conference, + user.user.email, + conference.email_settings.call_for_papers_dates_updates_subject, + conference.email_settings.generate_email_on_conf_updates(conference, user, conference.email_settings.call_for_papers_dates_updates_template)) end end diff --git a/app/models/email_settings.rb b/app/models/email_settings.rb index fd45c69d..d7a5c2e4 100644 --- a/app/models/email_settings.rb +++ b/app/models/email_settings.rb @@ -41,12 +41,6 @@ class EmailSettings < ActiveRecord::Base h end - def generate_registration_email(conference, user) - values = get_values(conference, user) - template = registration_email_template - parse_template(template, values) - end - def generate_accepted_email(event) values = get_values(event.conference, event.submitter, event) template = accepted_email_template @@ -65,21 +59,9 @@ class EmailSettings < ActiveRecord::Base parse_template(template, values) end - def generate_conference_date_update_mail(conference, user) + def generate_email_on_conf_updates(conference, user, conf_update_template) values = get_values(conference, user) - template = updated_conference_dates_template - parse_template(template, values) - end - - def generate_conference_registration_date_update_mail(conference, user) - values = get_values(conference, user) - template = updated_conference_registration_dates_template - parse_template(template, values) - end - - def generate_send_email_on_venue_update(conference, user) - values = get_values(conference, user) - template = venue_update_template + template = conf_update_template parse_template(template, values) end diff --git a/app/views/admin/emails/index.html.haml b/app/views/admin/emails/index.html.haml index fa59ce98..fa1c075a 100644 --- a/app/views/admin/emails/index.html.haml +++ b/app/views/admin/emails/index.html.haml @@ -52,6 +52,20 @@ "data-name"=>"email_settings_venue_update_template"} Load Template %a.btn.btn-link.control_label.template_help_link{"data-name"=>"updated_venue_help"} Show Help = render partial: 'help', locals: {id: 'updated_venue_help', show_event_variables: false} + = f.input :send_on_call_for_papers_schedule_public, hint: "This will notify all participants when the dates are updated or when the schedule is made public" + = f.input :call_for_papers_schedule_public_subject, hint: "This subject will used whenever dates are updated or when the schedule is made public" + = f.input :call_for_papers_schedule_public_template, :input_html => { :rows => 10, :cols => 20 } + %a.btn.btn-link.control_label.load_template{"data-template"=>"Dear {name},\n\nThe Conference Call for Papers Details of {conference} has changed.The schedule is being made public.\n Link to Schedule {schedule_link} \n\nBest wishes\n\n{conference} Team", + "data-name"=>"email_settings_call_for_papers_schedule_public_template"} Load Template + %a.btn.btn-link.control_label.template_help_link{"data-name"=>"updated_cfp_help"} Show Help + = render partial: 'help', locals: {id: 'updated_cfp_help', show_event_variables: false} + = f.input :send_on_call_for_papers_dates_updates, hint: "This will notify all participants when the dates are updated or when the schedule is made public" + = f.input :call_for_papers_dates_updates_subject, hint: "This subject will used whenever dates are updated or when the schedule is made public" + = f.input :call_for_papers_dates_updates_template, :input_html => { :rows => 10, :cols => 20 } + %a.btn.btn-link.control_label.load_template{"data-template"=>"Dear {name},\n\nThe Conference Call for Papers Details of {conference} has changed.\nNew Dates : {cfp_start_date} - {cfp_end_date}.\n Link to Schedule {schedule_link} \n\nBest wishes\n\n{conference} Team", + "data-name"=>"email_settings_call_for_papers_dates_updates_template"} Load Template + %a.btn.btn-link.control_label.template_help_link{"data-name"=>"updated_cfp_help"} Show Help + = render partial: 'help', locals: {id: 'updated_cfp_help', show_event_variables: false} .row .col-md-12 = f.action :submit, :as => :button, :button_html => {:class => "btn btn-primary"} diff --git a/spec/factories/email_settings.rb b/spec/factories/email_settings.rb index d840a94c..fb009931 100644 --- a/spec/factories/email_settings.rb +++ b/spec/factories/email_settings.rb @@ -8,6 +8,8 @@ FactoryGirl.define do send_on_confirmed_without_registration false send_on_updated_conference_dates true send_on_updated_conference_registration_dates true + send_on_call_for_papers_schedule_public true + send_on_call_for_papers_dates_updates true updated_conference_dates_template 'Sample Conference\n New Dates: January 17 - 21 2014' updated_conference_dates_subject 'Conference dates have been updated' updated_conference_registration_dates_subject 'Conference registration dates have been updated' @@ -17,5 +19,9 @@ FactoryGirl.define do venue_update_template "Venue has been Updated to Sample Location" registration_subject 'Lorem Ipsum Dolsum' registration_email_template 'Lorem ipsum dolor sit amet, consectetuer adipiscing elit' + call_for_papers_dates_updates_subject "Call for Papers dates have been updated" + call_for_papers_dates_updates_template "Please checkout the new updates to submit your proposal for Sample Conference" + call_for_papers_schedule_public_subject "Sample Conference Cfp schedule is Public" + call_for_papers_schedule_public_template "Call for Papers schedule is Public.Checkout the link" end end diff --git a/spec/views/admin/emails/index.html.haml_spec.rb b/spec/views/admin/emails/index.html.haml_spec.rb index e859ff2e..44fd435c 100644 --- a/spec/views/admin/emails/index.html.haml_spec.rb +++ b/spec/views/admin/emails/index.html.haml_spec.rb @@ -8,9 +8,9 @@ describe 'admin/emails/index' do assign :settings, @settings render expect(rendered). - to have_selector("input[type='checkbox'][value='1']", count: 7) + to have_selector("input[type='checkbox'][value='1']", count: 9) expect(rendered). - to have_selector("input[checked='checked'][type='checkbox'][value='1']", count: 4) + to have_selector("input[checked='checked'][type='checkbox'][value='1']", count: 6) expect(rendered).to include('Lorem Ipsum Dolsum') expect(rendered). to include('Lorem ipsum dolor sit amet, consectetuer adipiscing elit') @@ -20,5 +20,13 @@ describe 'admin/emails/index' do to include('Conference registration dates have been updated') expect(rendered).to include("Venue has been updated") expect(rendered).to include("Venue has been Updated to Sample Location") + expect(rendered). + to include("Call for Papers dates have been updated") + expect(rendered). + to include("Please checkout the new updates to submit your proposal for Sample Conference") + expect(rendered). + to include("Sample Conference Cfp schedule is Public") + expect(rendered). + to include("Call for Papers schedule is Public.Checkout the link") end end