diff --git a/ruby/db/migrate/20250227125441_add_profile_complete_columns_to_users.rb b/ruby/db/migrate/20250227125441_add_profile_complete_columns_to_users.rb index cef65f792..ca64edcc7 100644 --- a/ruby/db/migrate/20250227125441_add_profile_complete_columns_to_users.rb +++ b/ruby/db/migrate/20250227125441_add_profile_complete_columns_to_users.rb @@ -16,3 +16,11 @@ execute "ALTER TABLE users DROP COLUMN profile_complete_reminder3_sent_at" end end +=begin + ALTER TABLE users ADD COLUMN profile_completed_at TIMESTAMP + CREATE INDEX index_users_on_profile_completed_at ON users USING btree (profile_completed_at) + ALTER TABLE users ADD COLUMN profile_complete_reminder1_sent_at TIMESTAMP + ALTER TABLE users ADD COLUMN profile_complete_reminder2_sent_at TIMESTAMP + ALTER TABLE users ADD COLUMN profile_complete_reminder3_sent_at TIMESTAMP + UPDATE users set profile_completed_at=NOW() WHERE users.id IN (SELECT player_id FROM musicians_instruments) OR users.id IN (SELECT player_id FROM genre_players); + end \ No newline at end of file diff --git a/ruby/db/migrate/20250511151844_add_gear_setup_reminder_columns_to_users.rb b/ruby/db/migrate/20250511151844_add_gear_setup_reminder_columns_to_users.rb index 06185bbcf..2af9c834e 100644 --- a/ruby/db/migrate/20250511151844_add_gear_setup_reminder_columns_to_users.rb +++ b/ruby/db/migrate/20250511151844_add_gear_setup_reminder_columns_to_users.rb @@ -11,3 +11,10 @@ execute "ALTER TABLE users DROP COLUMN gear_setup_reminder3_sent_at" end end + + +=begin + ALTER TABLE users ADD COLUMN gear_setup_reminder1_sent_at TIMESTAMP; +ALTER TABLE users ADD COLUMN gear_setup_reminder2_sent_at TIMESTAMP; +ALTER TABLE users ADD COLUMN gear_setup_reminder3_sent_at TIMESTAMP; + end \ No newline at end of file diff --git a/ruby/db/migrate/20250605092511_add_signup_survey_sent_at_to_users.rb b/ruby/db/migrate/20250605092511_add_signup_survey_sent_at_to_users.rb index 879bda4a2..5adb973fd 100644 --- a/ruby/db/migrate/20250605092511_add_signup_survey_sent_at_to_users.rb +++ b/ruby/db/migrate/20250605092511_add_signup_survey_sent_at_to_users.rb @@ -6,3 +6,6 @@ execute "ALTER TABLE users DROP COLUMN signup_survey_sent_at" end end +=begin + ALTER TABLE users ADD COLUMN signup_survey_sent_at TIMESTAMP +=end \ No newline at end of file diff --git a/ruby/lib/jam_ruby.rb b/ruby/lib/jam_ruby.rb index 789a5e6cb..112c35648 100755 --- a/ruby/lib/jam_ruby.rb +++ b/ruby/lib/jam_ruby.rb @@ -120,6 +120,8 @@ require "jam_ruby/lib/subscription_message" require "jam_ruby/lib/stats.rb" 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/amqp/amqp_connection_manager" require "jam_ruby/database" require "jam_ruby/message_factory" diff --git a/ruby/lib/jam_ruby/lib/email_profile_reminder.rb b/ruby/lib/jam_ruby/lib/email_profile_reminder.rb index a253f0eb7..c5de827fc 100644 --- a/ruby/lib/jam_ruby/lib/email_profile_reminder.rb +++ b/ruby/lib/jam_ruby/lib/email_profile_reminder.rb @@ -1,25 +1,30 @@ module JamRuby class EmailProfileReminder + @@log = Logging.logger[EmailProfileReminder] def self.send_reminders - #If the user has not updated their profile 1 day after signup, then send reminder email1 - reminder1_users.each do |user| - UserMailer.profile_complete_reminder1(user).deliver_now - user.update(profile_complete_reminder1_sent_at: Time.now) - end + begin + #If the user has not updated their profile 1 day after signup, then send reminder email1 + reminder1_users.find_each do |user| + UserMailer.profile_complete_reminder1(user).deliver_now + User.where(id: user.id).update_all(profile_complete_reminder1_sent_at: Time.now) + end - #If the user has not updated their profile 3 days after signup, then send reminder email2 - reminder2_users.each do |user| - UserMailer.profile_complete_reminder2(user).deliver_now - user.update(profile_complete_reminder2_sent_at: Time.now) - end + #If the user has not updated their profile 3 days after signup, then send reminder email2 + reminder2_users.find_each do |user| + UserMailer.profile_complete_reminder2(user).deliver_now + User.where(id: user.id).update_all(profile_complete_reminder2_sent_at: Time.now) + end - #If the user has not updated their profile 5 days after signup, then send reminder email3 - reminder3_users.each do |user| - UserMailer.profile_complete_reminder3(user).deliver_now - user.update(profile_complete_reminder3_sent_at: Time.now) + #If the user has not updated their profile 5 days after signup, then send reminder email3 + reminder3_users.find_each do |user| + UserMailer.profile_complete_reminder3(user).deliver_now + User.where(id: user.id).update_all(profile_complete_reminder3_sent_at: Time.now) + end + rescue Exception => e + @@log.error("unable to send profile reminder email=#{e}") + puts "unable to send profile reminder email=#{e}" end - end def self.prospect_users @@ -27,15 +32,15 @@ module JamRuby end def self.reminder1_users - EmailProfileReminder.prospect_users.where("users.created_at > ? AND users.profile_complete_reminder1_sent_at IS NULL", 1.day.ago) + EmailProfileReminder.prospect_users.where("users.created_at < ? AND users.profile_complete_reminder1_sent_at IS NULL", 1.day.ago) end def self.reminder2_users - EmailProfileReminder.prospect_users.where("users.created_at > ? AND users.profile_complete_reminder1_sent_at IS NOT NULL AND users.profile_complete_reminder2_sent_at IS NULL", 3.days.ago) + EmailProfileReminder.prospect_users.where("users.created_at < ? AND users.profile_complete_reminder1_sent_at IS NOT NULL AND users.profile_complete_reminder2_sent_at IS NULL", 3.days.ago) end def self.reminder3_users - EmailProfileReminder.prospect_users.where("users.created_at > ? AND users.profile_complete_reminder2_sent_at IS NOT NULL AND users.profile_complete_reminder3_sent_at IS NULL", 5.days.ago) + EmailProfileReminder.prospect_users.where("users.created_at < ? AND users.profile_complete_reminder2_sent_at IS NOT NULL AND users.profile_complete_reminder3_sent_at IS NULL", 5.days.ago) end diff --git a/ruby/lib/jam_ruby/lib/email_signup_survey.rb b/ruby/lib/jam_ruby/lib/email_signup_survey.rb index 400513abe..3d296790b 100644 --- a/ruby/lib/jam_ruby/lib/email_signup_survey.rb +++ b/ruby/lib/jam_ruby/lib/email_signup_survey.rb @@ -1,10 +1,17 @@ module JamRuby class EmailSignupSurvey + @@log = Logging.logger[EmailSignupSurvey] + def self.send_survey - # if signup survey email has not been sent to this user, then send it - survey_users.each do |user| - UserMailer.signup_survey(user).deliver_now - user.update(signup_survey_sent_at: Time.now) + begin + # if signup survey email has not been sent to this user, then send it + survey_users.find_each do |user| + UserMailer.signup_survey(user).deliver_now + User.where(id: user.id).update_all(signup_survey_sent_at: Time.now) + end + rescue Exception => e + @@log.error("unable to send surevy email e=#{e}") + puts "unable to send surevy email e=#{e}" 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 420909a28..c94ec9eab 100644 --- a/ruby/lib/jam_ruby/resque/scheduled/hourly_job.rb +++ b/ruby/lib/jam_ruby/resque/scheduled/hourly_job.rb @@ -13,7 +13,10 @@ module JamRuby #TeacherPayment.hourly_check User.hourly_check AffiliatePartner.tally_up(Date.today) - EmailProfileReminder.send_reminders + + # bring me back in once tested profile_completed_at is set somewhere + #EmailProfileReminder.send_reminders + EmailSignupSurvey.send_survey ConnectionManager.new.cleanup_dangling