diff --git a/app/controllers/admin/events_controller.rb b/app/controllers/admin/events_controller.rb index 6b664ec6..dac7d505 100644 --- a/app/controllers/admin/events_controller.rb +++ b/app/controllers/admin/events_controller.rb @@ -168,10 +168,7 @@ module Admin private def update_state(id, transition, notice, mail = false) - event = Event.find(id) - if mail - check_mail_settings(event) - end + event = Event.find_by_id(id) if event begin if mail @@ -182,24 +179,17 @@ module Admin end event.save rescue Transitions::InvalidTransition => e - redirect_to( - admin_conference_events_path(conference_id: @conference.short_title), - notice: "Update state failed. #{e.message}") && return + error = "Update state failed. #{e.message}" end + else + error = 'Error! Could not find event!' + end + if error redirect_to(admin_conference_events_path(conference_id: @conference.short_title), - notice: notice) + alert: error) && return else redirect_to(admin_conference_events_path(conference_id: @conference.short_title), - notice: 'Error! Could not find event!') - end - end - - def check_mail_settings(event) - if !params[:send_mail].blank? && event && - event.conference.email_settings.rejected_email_template.nil? && - event.conference.email_settings.accepted_email_template.nil? - redirect_to(admin_conference_events_path(conference_id: @conference.short_title), - notice: 'Update Email Template before Sending Mails') && return + notice: notice) && return end end end diff --git a/app/controllers/proposal_controller.rb b/app/controllers/proposal_controller.rb index 1016bad7..9c2fff61 100644 --- a/app/controllers/proposal_controller.rb +++ b/app/controllers/proposal_controller.rb @@ -162,7 +162,7 @@ class ProposalController < ApplicationController if @event.transition_possible? :confirm begin @event.confirm! - rescue InvalidTransition => e + rescue Transitions::InvalidTransition => e redirect_to(conference_proposal_index_path(conference_id: @conference.short_title), alert: "Event was NOT confirmed: #{e.message}") return @@ -187,7 +187,7 @@ class ProposalController < ApplicationController begin @event.restart @event.save - rescue InvalidTransition => e + rescue Transitions::InvalidTransition => e redirect_to(conference_proposal_index_path(conference_id: @conference.short_title), alert: "Event was NOT restarted: #{e.message}") return diff --git a/app/mailers/mailbot.rb b/app/mailers/mailbot.rb index a7bd0807..38f5904d 100644 --- a/app/mailers/mailbot.rb +++ b/app/mailers/mailbot.rb @@ -1,41 +1,88 @@ class Mailbot < ActionMailer::Base default from: "no-reply@example.com" - def registration_mail(conference, person) - build_email(conference, - person.email, - conference.email_settings.registration_subject, - conference.email_settings.generate_registration_email(conference, person)) - + def registration_mail(conference, user) + # Send default template if subject or template is blank + if conference.email_settings.registration_subject.blank? || + conference.email_settings.registration_email_template.blank? + subject = "Registration for #{conference.title}" + template = 'registration_default_template' + send_default_mail(template, + subject, + conference, + user) + else + build_email(conference, + user.email, + conference.email_settings.registration_subject, + conference.email_settings.generate_registration_email(conference, user)) + end end def acceptance_mail(event) conference = event.conference - person = event.submitter - build_email(conference, - person.email, - conference.email_settings.accepted_subject, - conference.email_settings.generate_accepted_email(event)) + user = event.submitter + # Send default template if subject or template is blank + if conference.email_settings.accepted_subject.blank? || + conference.email_settings.accepted_email_template.blank? + subject = 'Your proposal has been accepted' + template = 'accepted_default_template' + send_default_mail(template, + subject, + conference, + user, + event) + else + build_email(conference, + user.email, + conference.email_settings.accepted_subject, + conference.email_settings.generate_accepted_email(event)) + end end def rejection_mail(event) conference = event.conference - person = event.submitter + user = event.submitter + + # Send default template if subject or template is blank + if conference.email_settings.rejected_subject.blank? || + conference.email_settings.rejected_email_template.blank? + subject = 'Your proposal has been rejected' + template = 'rejected_default_template' + send_default_mail(template, + subject, + conference, + user, + event) + else build_email(conference, - person.email, + user.email, conference.email_settings.rejected_subject, conference.email_settings.generate_rejected_email(event)) + end end def confirm_reminder_mail(event) conference = event.conference - person = event.submitter + user = event.submitter - build_email(conference, - person.email, - conference.email_settings.confirmed_without_registration_subject, - conference.email_settings.confirmed_but_not_registered_email(event)) + # Send default template if subject or template is blank + if conference.email_settings.confirmed_without_registration_subject.blank? || + conference.email_settings.confirmed_email_template.blank? + subject = "Your are not registered for #{conference.title}" + template = 'confirmed_default_template' + send_default_mail(template, + subject, + conference, + user, + event) + else + build_email(conference, + user.email, + conference.email_settings.confirmed_without_registration_subject, + conference.email_settings.confirmed_but_not_registered_email(event)) + end end def conference_date_update_mail(conference,dates) @@ -64,4 +111,19 @@ class Mailbot < ActionMailer::Base :body => body) end + + def send_default_mail(template, subject, conference, user, event = nil) + @name = user.name + @conference = conference + if event + @event = event + end + + mail(to: user.email, + from: conference.contact_email, + reply_to: conference.contact_email, + subject: subject, + template_name: template, + ) + end end diff --git a/app/models/email_settings.rb b/app/models/email_settings.rb index 633c6834..c9d759ea 100644 --- a/app/models/email_settings.rb +++ b/app/models/email_settings.rb @@ -49,6 +49,8 @@ class EmailSettings < ActiveRecord::Base parse_template(template, values) end + private + def parse_template(text, values) values.each do |key, value| text = text.gsub "{#{key}}", value unless text.blank? diff --git a/app/views/mailbot/accepted_default_template.html.erb b/app/views/mailbot/accepted_default_template.html.erb new file mode 100644 index 00000000..02b8a30c --- /dev/null +++ b/app/views/mailbot/accepted_default_template.html.erb @@ -0,0 +1,21 @@ + + +

Dear <%= @name %>,

+ +

We are very pleased to inform you that your submission <%= @event.title %> has been + accepted for the conference <%= @conference.title %>.

+ +

The public page of your submission can be found at:

+

<%= link_to "#{@event.title}", register_conference_path(@conference.short_title) %>

+

If you haven“t already registered for <%= @conference.title %>, please do as soon as possible:

+

<%= link_to "Register for #{@conference.title}", register_conference_path(@conference.short_title) %>

+ +

Feel free to contact us with any questions or concerns.

+ +

We look forward to seeing you there.

+ +

Best wishes

+ +

<%= @conference.title %> Team

+ + diff --git a/app/views/mailbot/confirmed_default_template.html.erb b/app/views/mailbot/confirmed_default_template.html.erb new file mode 100644 index 00000000..f050b95d --- /dev/null +++ b/app/views/mailbot/confirmed_default_template.html.erb @@ -0,0 +1,18 @@ + + +

Dear <%= @name %>,

+ +

Thank you for the confirmation of <%= @event.title %>. Unfortunately you are + not registered for the conference <%= @conference.title %>. Please register as soon as possible:

+ +

<%= link_to "Register for #{@conference.title}", register_conference_path(@conference.short_title) %>

+ +

Feel free to contact us with any questions or concerns.

+ +

We look forward to seeing you there.

+ +

Best wishes

+ +

<%= @conference.title %> Team

+ + diff --git a/app/views/mailbot/registration_default_template.html.erb b/app/views/mailbot/registration_default_template.html.erb new file mode 100644 index 00000000..d2f12f66 --- /dev/null +++ b/app/views/mailbot/registration_default_template.html.erb @@ -0,0 +1,17 @@ + + +

Dear <%= @name %>,

+ +

Thank you for Registering for the conference <%= @conference.title %>. + Please complete your registration by filling out your travel information. + If you are unable to attend please unregister online:

+

<%= link_to "Unregister for #{@conference.title}", register_conference_path(@conference.short_title) %>

+ +

Feel free to contact us with any questions or concerns. + We look forward to see you there.

+ +

Best wishes

+ +

<%= @conference.title %> Team

+ + diff --git a/app/views/mailbot/rejected_default_template.html.erb b/app/views/mailbot/rejected_default_template.html.erb new file mode 100644 index 00000000..53ce784b --- /dev/null +++ b/app/views/mailbot/rejected_default_template.html.erb @@ -0,0 +1,14 @@ + + +

Dear <%= @name %>,

+ +

Thank you for your submission <%= @event.title %> for the conference <%= @conference.title %>. + After careful consideration we are sorry to inform you that your submission + has been rejected.

+ +

Best wishes

+ +

<%= @conference.title %> Team

+ + + diff --git a/db/migrate/20140716115448_add_default_value_to_email_settings.rb b/db/migrate/20140716115448_add_default_value_to_email_settings.rb new file mode 100644 index 00000000..b49eb492 --- /dev/null +++ b/db/migrate/20140716115448_add_default_value_to_email_settings.rb @@ -0,0 +1,15 @@ +class AddDefaultValueToEmailSettings < ActiveRecord::Migration + def up + change_column :email_settings, :send_on_registration, :boolean, default: false + change_column :email_settings, :send_on_accepted, :boolean, default: false + change_column :email_settings, :send_on_rejected, :boolean, default: false + change_column :email_settings, :send_on_confirmed_without_registration, :boolean, default: false + end + + def down + change_column :email_settings, :send_on_registration, :boolean, default: true + change_column :email_settings, :send_on_accepted, :boolean, default: true + change_column :email_settings, :send_on_rejected, :boolean, default: true + change_column :email_settings, :send_on_confirmed_without_registration, :boolean, default: true + end +end diff --git a/db/schema.rb b/db/schema.rb index e45fb684..0fcc8024 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: 20140714141156) do +ActiveRecord::Schema.define(version: 20140716115448) do create_table "ahoy_events", force: true do |t| t.uuid "visit_id" @@ -150,10 +150,10 @@ ActiveRecord::Schema.define(version: 20140714141156) do create_table "email_settings", force: true do |t| t.integer "conference_id" - t.boolean "send_on_registration", default: true - t.boolean "send_on_accepted", default: true - t.boolean "send_on_rejected", default: true - t.boolean "send_on_confirmed_without_registration", default: true + 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"