diff --git a/app/mailers/user_mailer.rb b/app/mailers/user_mailer.rb index 42cc88df2..50ff6a872 100644 --- a/app/mailers/user_mailer.rb +++ b/app/mailers/user_mailer.rb @@ -16,8 +16,15 @@ def bulk_message_email(message_id, user_id, message = nil, use_examples = false) def incomplete_reminder_email(user_id) @user = User.find_by_id(user_id) - return if @user.blank? || @user.admin? || @user.questionnaire || Time.now.to_date > Date.parse(HackathonConfig["last_day_to_apply"]) + return if @user.blank? || @user.admin? || @user.questionnaire || Time.now.in_time_zone.to_date > Date.parse(HackathonConfig["last_day_to_apply"]).in_time_zone.to_date Message.queue_for_trigger("user.24hr_incomplete_application", @user.id) end + + def rsvp_reminder_email(user_id) + @user = User.find_by_id(user_id) + return if @user.blank? || !@user.questionnaire.acc_status == "accepted" || Time.now.in_time_zone.to_date > Date.parse(HackathonConfig["event_start_date"]).in_time_zone.to_date + + Message.queue_for_trigger("questionnaire.rsvp_reminder", @user.id) + end end diff --git a/app/models/message.rb b/app/models/message.rb index f98ee83bf..a25dfec09 100644 --- a/app/models/message.rb +++ b/app/models/message.rb @@ -37,6 +37,7 @@ class Message < ApplicationRecord "questionnaire.late_waitlist" => "Questionnaire Status: Waitlisted, Late", "questionnaire.rsvp_confirmed" => "Questionnaire Status: RSVP Confirmed", "questionnaire.rsvp_denied" => "Questionnaire Status: RSVP Denied", + "questionnaire.rsvp_reminder" => "Questionnaire: RSVP Reminder", "user.24hr_incomplete_application" => "User: Incomplete application (24 hours later)", "bus_list.new_captain_confirmation" => "Bus List: New captain confirmation", "bus_list.notes_update" => "Bus List: Updated notes (manually triggered)" diff --git a/app/models/questionnaire.rb b/app/models/questionnaire.rb index 973b96dad..2a2436ac2 100644 --- a/app/models/questionnaire.rb +++ b/app/models/questionnaire.rb @@ -10,6 +10,7 @@ class Questionnaire < ApplicationRecord before_validation :clean_negative_dietary_restrictions after_create :queue_triggered_email_create after_update :queue_triggered_email_update + after_update :queue_triggered_email_rsvp_reminder after_save :update_school_questionnaire_count after_destroy :update_school_questionnaire_count @@ -249,4 +250,18 @@ def queue_triggered_email_update def queue_triggered_email_create Message.queue_for_trigger("questionnaire.#{acc_status}", user_id) end + + def queue_triggered_email_rsvp_reminder + if saved_change_to_acc_status? && acc_status == "accepted" + days_remaining = Date.parse(HackathonConfig["event_start_date"]).in_time_zone.to_date - Time.now.in_time_zone.to_date + if days_remaining > 14 + deliver_date = 7.days.from_now + elsif days_remaining > 10 + deliver_date = 5.days.from_now + elsif days_remaining > 3 + deliver_date = 2.days.from_now + end + UserMailer.rsvp_reminder_email(user_id).deliver_later(wait_until: deliver_date) if deliver_date.present? + end + end end diff --git a/db/seed_messages/questionnaire--rsvp_reminder.md b/db/seed_messages/questionnaire--rsvp_reminder.md new file mode 100644 index 000000000..ad7577856 --- /dev/null +++ b/db/seed_messages/questionnaire--rsvp_reminder.md @@ -0,0 +1,12 @@ +## Missing RSVP + +
+ Yes, I will Attend »
+ No, I Can't Attend »
+
+ Link not working? Go to {{rsvp_url}}
+