Email notification on cfp dates updates and schedule made public

This commit is contained in:
Gopesh Tulsyan 2014-07-17 15:59:44 +05:30
parent 8cdf48c7df
commit f5c53f77cf
6 changed files with 69 additions and 27 deletions

View file

@ -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.')

View file

@ -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

View file

@ -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

View file

@ -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"}

View file

@ -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

View file

@ -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