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 00af35b1..d7a5c2e4 100644 --- a/app/models/email_settings.rb +++ b/app/models/email_settings.rb @@ -7,7 +7,10 @@ class EmailSettings < ActiveRecord::Base :send_on_updated_conference_dates, :updated_conference_dates_subject, :updated_conference_dates_template, :send_on_updated_conference_registration_dates, :updated_conference_registration_dates_subject, :updated_conference_registration_dates_template, - :send_on_venue_update, :venue_update_subject, :venue_update_template + :send_on_venue_update, :venue_update_subject, :venue_update_template, + :send_on_call_for_papers_dates_updates, :send_on_call_for_papers_schedule_public, + :call_for_papers_schedule_public_subject, :call_for_papers_dates_updates_subject, + :call_for_papers_schedule_public_template, :call_for_papers_dates_updates_template def get_values(conference, user, event = nil) h = { @@ -38,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 @@ -62,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/db/migrate/20140724113107_add_call_for_papers_updates_to_email_settings.rb b/db/migrate/20140724113107_add_call_for_papers_updates_to_email_settings.rb new file mode 100644 index 00000000..b7f0e6bb --- /dev/null +++ b/db/migrate/20140724113107_add_call_for_papers_updates_to_email_settings.rb @@ -0,0 +1,10 @@ +class AddCallForPapersUpdatesToEmailSettings < ActiveRecord::Migration + def change + add_column :email_settings, :send_on_call_for_papers_dates_updates, :boolean, default: false + add_column :email_settings, :send_on_call_for_papers_schedule_public, :boolean, default: false + add_column :email_settings, :call_for_papers_schedule_public_subject, :string + add_column :email_settings, :call_for_papers_dates_updates_subject, :string + add_column :email_settings, :call_for_papers_schedule_public_template, :text + add_column :email_settings, :call_for_papers_dates_updates_template, :text + end +end diff --git a/db/schema.rb b/db/schema.rb index 781e9871..4f112525 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -11,7 +11,7 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema.define(version: 20140719160903) do +ActiveRecord::Schema.define(version: 20140724113107) do create_table "ahoy_events", force: true do |t| t.uuid "visit_id" @@ -167,10 +167,10 @@ ActiveRecord::Schema.define(version: 20140719160903) do create_table "email_settings", force: true do |t| t.integer "conference_id" - t.boolean "send_on_registration", default: false - t.boolean "send_on_accepted", default: false - t.boolean "send_on_rejected", default: false - t.boolean "send_on_confirmed_without_registration", default: false + t.boolean "send_on_registration", default: false + t.boolean "send_on_accepted", default: false + t.boolean "send_on_rejected", default: false + t.boolean "send_on_confirmed_without_registration", default: false t.text "registration_email_template" t.text "accepted_email_template" t.text "rejected_email_template" @@ -181,15 +181,21 @@ ActiveRecord::Schema.define(version: 20140719160903) do t.string "accepted_subject" t.string "rejected_subject" t.string "confirmed_without_registration_subject" - t.boolean "send_on_updated_conference_dates", default: false + t.boolean "send_on_updated_conference_dates", default: false t.string "updated_conference_dates_subject" t.text "updated_conference_dates_template" - t.boolean "send_on_updated_conference_registration_dates", default: false + t.boolean "send_on_updated_conference_registration_dates", default: false t.string "updated_conference_registration_dates_subject" t.text "updated_conference_registration_dates_template" - t.boolean "send_on_venue_update", default: false + t.boolean "send_on_venue_update", default: false t.string "venue_update_subject" t.text "venue_update_template" + t.boolean "send_on_call_for_papers_dates_updates", default: false + t.boolean "send_on_call_for_papers_schedule_public", default: false + t.string "call_for_papers_schedule_public_subject" + t.string "call_for_papers_dates_updates_subject" + t.text "call_for_papers_schedule_public_template" + t.text "call_for_papers_dates_updates_template" end create_table "event_attachments", force: true do |t| @@ -481,8 +487,8 @@ ActiveRecord::Schema.define(version: 20140719160903) do create_table "venues", force: true do |t| t.string "guid" - t.text "name" - t.text "address" + t.text "name", limit: 255 + t.text "address", limit: 255 t.string "website" t.text "description" t.string "offline_map_url" @@ -493,8 +499,8 @@ ActiveRecord::Schema.define(version: 20140719160903) do t.string "photo_content_type" t.integer "photo_file_size" t.datetime "photo_updated_at" - t.boolean "include_venue_in_splash", default: false - t.boolean "include_lodgings_in_splash", default: false + t.boolean "include_venue_in_splash", default: false + t.boolean "include_lodgings_in_splash", default: false end create_table "versions", force: true do |t| 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