From 35a1fd07fa516fabf1e8c18725ad3d7f65d3e33a Mon Sep 17 00:00:00 2001 From: Seth Call Date: Sun, 18 Mar 2018 16:41:40 -0500 Subject: [PATCH] VRFS-4730 and VRFS-4732 - notifications of user activity --- ruby/lib/jam_ruby/models/lesson_session.rb | 25 +++++++++++++++++++ ruby/lib/jam_ruby/models/user.rb | 28 +++++++++++++++++++--- ruby/spec/jam_ruby/models/user_spec.rb | 14 +++++++++++ ruby/spec/support/utilities.rb | 8 +++++++ web/config/application.rb | 1 + web/config/environments/development.rb | 1 + 6 files changed, 74 insertions(+), 3 deletions(-) diff --git a/ruby/lib/jam_ruby/models/lesson_session.rb b/ruby/lib/jam_ruby/models/lesson_session.rb index fe9a00f4f..493c72733 100644 --- a/ruby/lib/jam_ruby/models/lesson_session.rb +++ b/ruby/lib/jam_ruby/models/lesson_session.rb @@ -775,7 +775,32 @@ module JamRuby if lesson_session.errors.any? puts "Lesson Session errors #{lesson_session.errors.inspect}" + else + begin + lesson_type = 'unknown' + if booking.is_test_drive? + if booking.student.first_onboarding_free_lesson_at + lesson_type = 'second free lesson' + else + lesson_type = 'first free lesson' + end + elsif lesson_session.slot.is_recurring? + lesson_type = 'monthly lesson' + else + lesson_type = 'single paid lesson' + end + + body = "Student has requested a #{lesson_type}!\n\nUser: #{booking.student.name}, #{booking.student.email}\nUser Admin URL:#{booking.student.admin_url}\n\n" + body += "Lesson Session URL: #{lesson_session.admin_url}" + AdminMailer.ugly({to: APP_CONFIG.email_support_alias, + subject:"Student '#{booking.student.name}' requested #{lesson_type}!", + body: body}).deliver_now + rescue + puts "Unable to alert that student requested lesson" + end + end + lesson_session end diff --git a/ruby/lib/jam_ruby/models/user.rb b/ruby/lib/jam_ruby/models/user.rb index facfb58ca..d2f2ed3f8 100644 --- a/ruby/lib/jam_ruby/models/user.rb +++ b/ruby/lib/jam_ruby/models/user.rb @@ -328,16 +328,38 @@ module JamRuby onboarding_email_5_sent_at_changed? || first_onboarding_free_lesson_at_changed? || first_onboarding_paid_lesson_at_changed? || - second_onboarding_free_lesson_at? || - onboarding_onboarded_at + second_onboarding_free_lesson_at_changed? || + onboarding_onboarded_at_changed? updates = {onboarding_status: self.computed_onboarding_status} if onboarder_id_changed? && onboarder_id - AdminMailer.ugly({to: onboarder.email, cc: 'support@jamkazam.com', + begin + AdminMailer.ugly({to: onboarder.email, cc: APP_CONFIG.email_support_alias, subject:'New student assigned to you', body: "Hi #{onboarder.first_name},\n\nA new student has been assigned to you for onboarding. Please send the first introductory email to this student ASAP, and update the onboarding console to start tracking.\n\nNew User Email: #{email}\n\nOnboarding Management: https://www.jamkazam.com/client#/account/onboarder\n\nThanks!\n\nRegards,\nTeam JamKazam"}).deliver_now + rescue + puts "UNABLE TO INDICATE ONBOARDER ASSIGNED" + end + end + + if onboarding_onboarded_at_changed? && onboarding_onboarded_at + begin + body = "A new student has been onboarded!\n\nUser: #{name}, #{email}\nUser Admin URL:#{admin_url}\n\n" + if onboarder + body += "Onboarder: #{onboarder.name}, #{onboarder.email}\nOnboarder Admin URL: #{onboarder.admin_url}\n\n" + end + body += "Onboarding Management: https://www.jamkazam.com/client#/account/onboarder\n\n" + AdminMailer.ugly({to: APP_CONFIG.email_support_alias, + subject:"Student '#{name}' successfully onboarded!", + body: body}).deliver_now + rescue + puts "UNABLE TO INDICATE ONBOARDED AT" + end + + end + if first_onboarding_free_lesson_at_changed? || first_onboarding_paid_lesson_at_changed? || second_onboarding_free_lesson_at? updates[:stuck_take_flesson] = false updates[:stuck_take_2nd_flesson] = false diff --git a/ruby/spec/jam_ruby/models/user_spec.rb b/ruby/spec/jam_ruby/models/user_spec.rb index e88b5c3ce..c262c7bdd 100644 --- a/ruby/spec/jam_ruby/models/user_spec.rb +++ b/ruby/spec/jam_ruby/models/user_spec.rb @@ -934,11 +934,15 @@ describe User do describe "onboarding_status" do let(:user) {FactoryGirl.create(:user)} + before(:each) {UserMailer.deliveries.clear} + it "onboarded" do user.send_onboarding_survey.should be_false user.onboarding_onboarded_at = Time.now user.save! + user.reload user.send_onboarding_survey.should be_true + UserMailer.deliveries.count.should eql 1 user.onboarding_status = User::ONBOARDING_STATUS_ONBOARDED end @@ -946,7 +950,9 @@ describe User do user.send_onboarding_survey.should be_false user.onboarding_lost_reason = User::LOST_REASON_NO_VIDEO_STREAM user.save! + user.reload user.send_onboarding_survey.should be_true + UserMailer.deliveries.count.should eql 0 user.onboarding_status = User::ONBOARDING_STATUS_LOST end @@ -954,7 +960,9 @@ describe User do user.send_onboarding_survey.should be_false user.onboarding_escalation_reason = User::ESCALATION_REASON_NO_VIDEO_STREAM user.save! + user.reload user.send_onboarding_survey.should be_true + UserMailer.deliveries.count.should eql 0 user.onboarding_status = User::ONBOARDING_STATUS_ESCALATED end @@ -962,7 +970,9 @@ describe User do user.send_onboarding_survey.should be_false user.first_onboarding_free_lesson_at = Time.now user.save! + user.reload user.send_onboarding_survey.should be_false + UserMailer.deliveries.count.should eql 0 user.onboarding_status = User::ONBOARDING_STATUS_FREE_LESSON end @@ -970,7 +980,9 @@ describe User do user.send_onboarding_survey.should be_false user.first_onboarding_paid_lesson_at = Time.now user.save! + user.reload user.send_onboarding_survey.should be_false + UserMailer.deliveries.count.should eql 0 user.onboarding_status = User::ONBOARDING_STATUS_PAID_LESSON end @@ -978,7 +990,9 @@ describe User do user.send_onboarding_survey.should be_false user.onboarder = FactoryGirl.create(:user, is_onboarder:true) user.save! + user.reload user.send_onboarding_survey.should be_false + UserMailer.deliveries.count.should eql 1 user.onboarding_status = User::ONBOARDING_STATUS_ASSIGNED end diff --git a/ruby/spec/support/utilities.rb b/ruby/spec/support/utilities.rb index 1b195b0f1..58ea376ad 100644 --- a/ruby/spec/support/utilities.rb +++ b/ruby/spec/support/utilities.rb @@ -19,6 +19,10 @@ def app_config 'alerts@jamkazam.com' end + def email_support_alias + 'support@jamkazam.com' + end + def email_jamclass_alerts_alias 'jamclass-alerts@jamkazam.com' end @@ -27,6 +31,10 @@ def app_config 'clientcrash@jamkazam.com' end + def email_support_alias + 'support-dev@jamkazam.com' + end + def email_recurly_notice 'recurly-alerts@jamkazam.com' end diff --git a/web/config/application.rb b/web/config/application.rb index 1e65eefc1..3c015fdc1 100644 --- a/web/config/application.rb +++ b/web/config/application.rb @@ -248,6 +248,7 @@ if defined?(Bundler) config.estimated_slow_mixdown_time = 80 config.num_packaging_nodes = 2 + config.email_support_alias = 'support@jamkazam.com' config.email_partners_alias = 'partners@jamkazam.com' config.email_social_alias = 'social@jamkazam.com' config.email_crashes_alias = 'clientcrash@jamkazam.com' diff --git a/web/config/environments/development.rb b/web/config/environments/development.rb index 99774e570..ba0705654 100644 --- a/web/config/environments/development.rb +++ b/web/config/environments/development.rb @@ -95,6 +95,7 @@ SampleApp::Application.configure do config.email_crashes_alias = ENV['ALERT_EMAIL'] || 'clientcrash-dev@jamkazam.com' config.email_social_alias = ENV['ALERT_EMAIL'] || 'social-dev@jamkazam.com' config.email_partners_alias = ENV['ALERT_EMAIL'] || 'partners-dev@jamkazam.com' + config.email_support_alias = ENV['ALERT_EMAIL'] || 'support-dev@jamkazam.com' config.guard_against_fraud = true config.guard_against_browser_fraud = true