diff --git a/app/controllers/admin/events_controller.rb b/app/controllers/admin/events_controller.rb index 08d0065e..dac7d505 100644 --- a/app/controllers/admin/events_controller.rb +++ b/app/controllers/admin/events_controller.rb @@ -168,13 +168,7 @@ module Admin private def update_state(id, transition, notice, mail = false) - event = Event.find(id) - if mail && params[:send_mail].blank? && event && - (event.conference.email_settings.rejected_email_template.nil? || - event.conference.email_settings.accepted_email_template.nil?) - return redirect_to(admin_conference_events_path(conference_id: @conference.short_title), - notice: 'Update Email Template before Sending Mails') && return - end + event = Event.find_by_id(id) if event begin if mail @@ -185,13 +179,18 @@ module Admin end event.save rescue Transitions::InvalidTransition => e - notice = "Update state failed. #{e.message}" + error = "Update state failed. #{e.message}" end else - notice = 'Error! Could not find event!' + error = 'Error! Could not find event!' + end + if error + redirect_to(admin_conference_events_path(conference_id: @conference.short_title), + alert: error) && return + else + redirect_to(admin_conference_events_path(conference_id: @conference.short_title), + notice: notice) && return end - redirect_to(admin_conference_events_path(conference_id: @conference.short_title), - notice: notice) && return end end end 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/models/event.rb b/app/models/event.rb index e8152360..85ffa892 100644 --- a/app/models/event.rb +++ b/app/models/event.rb @@ -123,9 +123,7 @@ class Event < ActiveRecord::Base end def process_confirmation - if conference.email_settings.send_on_confirmed_without_registration? && - conference.email_settings.confirmed_email_template && - conference.email_settings.confirmed_without_registration_subject + if conference.email_settings.send_on_confirmed_without_registration? if conference.registrations.where(user_id: submitter.id).first.nil? Mailbot.confirm_reminder_mail(self).deliver end @@ -134,8 +132,6 @@ class Event < ActiveRecord::Base def process_acceptance(options) if conference.email_settings.send_on_accepted && - conference.email_settings.accepted_email_template && - conference.email_settings.accepted_subject && options[:send_mail].blank? Rails.logger.debug 'Sending event acceptance mail' Mailbot.acceptance_mail(self).deliver @@ -144,8 +140,6 @@ class Event < ActiveRecord::Base def process_rejection(options) if conference.email_settings.send_on_rejected && - conference.email_settings.rejected_email_template && - conference.email_settings.rejected_subject && options[:send_mail].blank? Rails.logger.debug 'Sending rejected mail' Mailbot.rejection_mail(self).deliver 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

+ + +