Adds email template and settings for conference registration dates updates

Added tests

Minor typo
This commit is contained in:
Gopesh Tulsyan 2014-07-10 22:11:27 +05:30
parent c16d76c9b8
commit 6d847547b7
5 changed files with 26 additions and 4 deletions

View file

@ -1,5 +1,4 @@
class Admin::ConferenceController < ApplicationController class Admin::ConferenceController < ApplicationController
include HomeHelper
before_filter :verify_organizer before_filter :verify_organizer
def index def index
@ -81,6 +80,13 @@ class Admin::ConferenceController < ApplicationController
Mailbot.conference_date_update_mail(@conference,date_string(@conference.start_date, @conference.end_date)).deliver Mailbot.conference_date_update_mail(@conference,date_string(@conference.start_date, @conference.end_date)).deliver
end end
end end
if @conference.registration_start_date_changed? || @conference.registration_end_date_changed?
if @conference.email_settings.send_on_updated_conference_registration_dates
Mailbot.conference_registration_date_update_mail(@conference,date_string(@conference.registration_start_date, @conference.registration_end_date)).deliver
end
end
if @conference.update_attributes(params[:conference]) if @conference.update_attributes(params[:conference])
redirect_to(edit_admin_conference_path(id: @conference.short_title), redirect_to(edit_admin_conference_path(id: @conference.short_title),
notice: 'Conference was successfully updated.') notice: 'Conference was successfully updated.')

View file

@ -39,7 +39,7 @@ class Mailbot < ActionMailer::Base
end end
def conference_date_update_mail(conference,dates) def conference_date_update_mail(conference,dates)
subject = conference.email_settings.updated_conference_dates_subject.blank? ? "#{conference.title} dates updated" : conference.email_settings.updated_conference_dates_subject subject = conference.email_settings.updated_conference_dates_subject.blank? ? "#{conference.title} Dates Updated" : conference.email_settings.updated_conference_dates_subject
partial = "#{conference.title}\n New Dates : #{dates}\n For more information visit #{Rails.application.routes.url_helpers.conference_path(conference.short_title, host: CONFIG['url_for_emails'])}" partial = "#{conference.title}\n New Dates : #{dates}\n For more information visit #{Rails.application.routes.url_helpers.conference_path(conference.short_title, host: CONFIG['url_for_emails'])}"
body = conference.email_settings.updated_conference_dates_template.blank? ? "#{partial}" : "#{conference.email_settings.updated_conference_dates_template}\n #{partial}" body = conference.email_settings.updated_conference_dates_template.blank? ? "#{partial}" : "#{conference.email_settings.updated_conference_dates_template}\n #{partial}"
conference.registrations.each do |u| conference.registrations.each do |u|
@ -47,6 +47,15 @@ class Mailbot < ActionMailer::Base
end end
end end
def conference_registration_date_update_mail(conference, dates)
subject = conference.email_settings.updated_conference_registration_dates_subject.blank? ? "#{conference.title} Registration Dates Updated" : conference.email_settings.updated_conference_registration_dates_subject
partial = "#{conference.title}\n New Registration Dates : #{dates}\n For more information visit #{Rails.application.routes.url_helpers.conference_path(conference.short_title, host: CONFIG['url_for_emails'])}"
body = conference.email_settings.updated_conference_registration_dates_template.blank? ? "#{partial}" : "#{conference.email_settings.updated_conference_dates_template}\n #{partial}"
conference.registrations.each do |u|
build_email(conference, u.user.email, subject, body)
end
end
def build_email(conference, to, subject, body) def build_email(conference, to, subject, body)
mail(:to => to, mail(:to => to,
:from => conference.contact_email, :from => conference.contact_email,

View file

@ -38,6 +38,9 @@
= f.input :send_on_updated_conference_dates, hint: "This is to notify all participants that the conference dates has been changed." = f.input :send_on_updated_conference_dates, hint: "This is to notify all participants that the conference dates has been changed."
= f.input :updated_conference_dates_subject = f.input :updated_conference_dates_subject
= f.input :updated_conference_dates_template, :input_html => { :rows => 10, :cols => 20 } = f.input :updated_conference_dates_template, :input_html => { :rows => 10, :cols => 20 }
= f.input :send_on_updated_conference_registration_dates, hint: "This is to notify all participants that the conference registration dates has been changed."
= f.input :updated_conference_registration_dates_subject
= f.input :updated_conference_registration_dates_template, :input_html => { :rows => 10, :cols => 20 }
= f.action :submit, :as => :button, :button_html => {:class => "btn btn-primary"} = f.action :submit, :as => :button, :button_html => {:class => "btn btn-primary"}
:javascript :javascript

View file

@ -7,7 +7,9 @@ FactoryGirl.define do
send_on_rejected false send_on_rejected false
send_on_confirmed_without_registration false send_on_confirmed_without_registration false
send_on_updated_conference_dates true send_on_updated_conference_dates true
send_on_updated_conference_registration_dates true
updated_conference_dates_subject 'Conference dates have been updated' updated_conference_dates_subject 'Conference dates have been updated'
updated_conference_registration_dates_subject 'Conference registration dates have been updated'
registration_subject 'Lorem Ipsum Dolsum' registration_subject 'Lorem Ipsum Dolsum'
registration_email_template 'Lorem ipsum dolor sit amet, consectetuer adipiscing elit' registration_email_template 'Lorem ipsum dolor sit amet, consectetuer adipiscing elit'
end end

View file

@ -8,13 +8,15 @@ describe 'admin/emails/index' do
assign :settings, @settings assign :settings, @settings
render render
expect(rendered). expect(rendered).
to have_selector("input[type='checkbox'][value='1']", count: 5) to have_selector("input[type='checkbox'][value='1']", count: 6)
expect(rendered). expect(rendered).
to have_selector("input[checked='checked'][type='checkbox'][value='1']", count: 2) to have_selector("input[checked='checked'][type='checkbox'][value='1']", count: 3)
expect(rendered).to include('Lorem Ipsum Dolsum') expect(rendered).to include('Lorem Ipsum Dolsum')
expect(rendered). expect(rendered).
to include('Lorem ipsum dolor sit amet, consectetuer adipiscing elit') to include('Lorem ipsum dolor sit amet, consectetuer adipiscing elit')
expect(rendered). expect(rendered).
to include('Conference dates have been updated') to include('Conference dates have been updated')
expect(rendered).
to include('Conference registration dates have been updated')
end end
end end