diff --git a/ruby/lib/jam_ruby.rb b/ruby/lib/jam_ruby.rb index 112c35648..ea2654040 100755 --- a/ruby/lib/jam_ruby.rb +++ b/ruby/lib/jam_ruby.rb @@ -122,6 +122,7 @@ require "jam_ruby/lib/email_new_musician_match" require "jam_ruby/lib/musician_filter" require "jam_ruby/lib/email_profile_reminder" require "jam_ruby/lib/email_signup_survey" +require "jam_ruby/lib/gear_setup_reminder" require "jam_ruby/amqp/amqp_connection_manager" require "jam_ruby/database" require "jam_ruby/message_factory" diff --git a/ruby/lib/jam_ruby/lib/email_signup_survey.rb b/ruby/lib/jam_ruby/lib/email_signup_survey.rb index 3d296790b..1fe847013 100644 --- a/ruby/lib/jam_ruby/lib/email_signup_survey.rb +++ b/ruby/lib/jam_ruby/lib/email_signup_survey.rb @@ -16,7 +16,7 @@ module JamRuby end def self.survey_users - cutoff_date = Date.parse(Rails.application.config.signup_survey_cutoff_date) # Define a cutoff date for the survey + cutoff_date = Date.parse(Rails.application.config.signup_survey_cutoff_date) # Define a cutoff date for the survey/gear setup emails User.where("users.signup_survey_sent_at IS NULL AND users.created_at < ? AND users.created_at > ?", 1.days.ago, cutoff_date) end end diff --git a/ruby/lib/jam_ruby/lib/gear_setup_reminder.rb b/ruby/lib/jam_ruby/lib/gear_setup_reminder.rb index bb1f06ff5..14e5913ca 100644 --- a/ruby/lib/jam_ruby/lib/gear_setup_reminder.rb +++ b/ruby/lib/jam_ruby/lib/gear_setup_reminder.rb @@ -1,20 +1,46 @@ module JamRuby class GearSetupReminder - + + @@log = Logging.logger[GearSetupReminder] + + def self.send_reminders + begin + cutoff_date = Date.parse(Rails.application.config.signup_survey_cutoff_date) # Define a cutoff date for the survey/gear setup emails + + reminder1_users(cutoff_date).find_each do |user| + UserMailer.gear_setup_reminder1(user).deliver_now + User.where(id: user.id).update_all(gear_setup_reminder1_sent_at: Time.now) + end + + reminder2_users(cutoff_date).find_each do |user| + UserMailer.gear_setup_reminder2(user).deliver_now + User.where(id: user.id).update_all(gear_setup_reminder2_sent_at: Time.now) + end + + reminder3_users(cutoff_date).find_each do |user| + UserMailer.gear_setup_reminder3(user).deliver_now + User.where(id: user.id).update_all(gear_setup_reminder3_sent_at: Time.now) + end + rescue Exception => e + @@log.error("unable to send gear setup reminder email #{e}") + puts "unable to send gear setup reminder email #{e}" + end + end + def self.prospect_users User.where("users.first_certified_gear_at IS NULL") end - def self.reminder1_users - GearSetupReminder.prospect_users.where("users.created_at > ? AND users.gear_setup_reminder1_sent_at IS NULL", 1.day.ago) + def self.reminder1_users(cutoff) + GearSetupReminder.prospect_users.where("users.created_at < ? AND users.created_at > ? AND users.gear_setup_reminder1_sent_at IS NULL", 1.day.ago, cutoff_date) end - def self.reminder2_users - GearSetupReminder.prospect_users.where("users.created_at > ? AND users.gear_setup_reminder1_sent_at IS NOT NULL AND users.gear_setup_reminder2_sent_at IS NULL", 3.days.ago) + def self.reminder2_users(cutoff) + GearSetupReminder.prospect_users.where("users.created_at < ? AND users.created_at > ? AND users.gear_setup_reminder1_sent_at IS NOT NULL AND users.gear_setup_reminder2_sent_at IS NULL", 3.days.ago, cutoff_date) end - def self.reminder3_users - GearSetupReminder.prospect_users.where("users.created_at > ? AND users.gear_setup_reminder2_sent_at IS NOT NULL AND users.gear_setup_reminder3_sent_at IS NULL", 5.days.ago) + def self.reminder3_users(cutoff) + GearSetupReminder.prospect_users.where("users.created_at < ? AND users.created_at > ? AND users.gear_setup_reminder2_sent_at IS NOT NULL AND users.gear_setup_reminder3_sent_at IS NULL", 5.days.ago, cutoff_date) end end diff --git a/ruby/lib/jam_ruby/resque/scheduled/hourly_job.rb b/ruby/lib/jam_ruby/resque/scheduled/hourly_job.rb index c94ec9eab..95294b037 100644 --- a/ruby/lib/jam_ruby/resque/scheduled/hourly_job.rb +++ b/ruby/lib/jam_ruby/resque/scheduled/hourly_job.rb @@ -18,6 +18,7 @@ module JamRuby #EmailProfileReminder.send_reminders EmailSignupSurvey.send_survey + GearSetupReminder.send_reminders ConnectionManager.new.cleanup_dangling @@log.info("done")