From 1eaaf8d4bf5948b556282ae418a831afcf0de713 Mon Sep 17 00:00:00 2001 From: Seth Call Date: Mon, 11 Jan 2021 12:15:15 -0600 Subject: [PATCH] try new sync --- ruby/lib/jam_ruby/elasticsearch.rb | 24 ++++++++++--------- ruby/lib/jam_ruby/recurly_client.rb | 17 +++++++++---- ruby/lib/jam_ruby/subscription_definitions.rb | 21 ++++++++++++---- .../jam_ruby/subscription_definitions_spec.rb | 16 +++++++++++++ .../api_music_sessions_controller.rb | 2 +- 5 files changed, 59 insertions(+), 21 deletions(-) create mode 100644 ruby/spec/jam_ruby/subscription_definitions_spec.rb diff --git a/ruby/lib/jam_ruby/elasticsearch.rb b/ruby/lib/jam_ruby/elasticsearch.rb index 94e325918..b102dbca1 100644 --- a/ruby/lib/jam_ruby/elasticsearch.rb +++ b/ruby/lib/jam_ruby/elasticsearch.rb @@ -28,8 +28,6 @@ module JamRuby def session_ratings(music_session, current_user, original_body) begin - time = Time.now.utc.iso8601 - my_data = original_body.delete('**me') original_body.each do |k, other_data| @@ -37,17 +35,20 @@ module JamRuby # we init passwordfield as a UUID, which is a bogus hash; so if we see UUId, we know retailer has no password yet UUIDTools::UUID.parse(k) - other_user = User.find(k) + other_connection = Connection.find_by_client_id(k) + if other_connection + other_user = other_connection.user - body = {me: my_data, other: other_data} + body = {me: my_data, other: other_data} - body["@timestamp"] = Time.now.utc.iso8601 - body["my_email"] = current_user.email - body["my_user_id"] = current_user.id - body["other_email"] = other_user.email - body["other_user_id"] = other_user.id - body["music_session_id"] = music_session.id - @client.index(id: "#{music_session.id}-#{current_user.id}-#{other_user.id}", index: MUSIC_SESSION_RATINGS, body: body) + body["@timestamp"] = Time.now.utc.iso8601 + body["my_email"] = current_user.email + body["my_user_id"] = current_user.id + body["other_email"] = other_user.email + body["other_user_id"] = other_user.id + body["music_session_id"] = music_session.id + @client.index(id: "#{music_session.id}-#{current_user.id}-#{other_user.id}", index: MUSIC_SESSION_RATINGS, body: body) + end rescue ArgumentError # that's ok ; there are non-uuid keys in here; we ignore those end @@ -56,6 +57,7 @@ module JamRuby return true rescue => e @log.error("unable to parse session ratings #{e}") + puts("unable to parse session ratings #{e}") return false end diff --git a/ruby/lib/jam_ruby/recurly_client.rb b/ruby/lib/jam_ruby/recurly_client.rb index b25f43755..5de946f96 100644 --- a/ruby/lib/jam_ruby/recurly_client.rb +++ b/ruby/lib/jam_ruby/recurly_client.rb @@ -585,10 +585,19 @@ module JamRuby else if user.subscription_plan_code != user.desired_plan_code puts "they are back! get them back into their desired plan #{user.email}" - user.subscription_plan_code = user.desired_plan_code - user.subscription_plan_code_set_at = DateTime.now - user.subscription_sync_code = 'good_standing_repaired' - user.subscription_sync_msg = "user is in good standing but desired != effective; plan_code set to #{user.desired_plan_code}" + if !SubscriptionDefinitions.is_downgrade(user.desired_plan_code, user.subscription_plan_code) + user.subscription_plan_code = user.desired_plan_code + user.subscription_plan_code_set_at = DateTime.now + user.subscription_sync_code = 'good_standing_repaired' + user.subscription_sync_msg = "user is in good standing but desired != effective; plan_code set to #{user.desired_plan_code}" + else + #user.subscription_plan_code = user.desired_plan_code + #user.subscription_plan_code_set_at = DateTime.now + user.subscription_sync_code = 'good_standing_ignored' + user.subscription_sync_msg = "user is in good standing but the desired plan is less than subscription plan; plan_code not touched" + end + + else puts "good standing user #{user.email} had no changes" user.subscription_sync_code = 'good_standing_unchanged' diff --git a/ruby/lib/jam_ruby/subscription_definitions.rb b/ruby/lib/jam_ruby/subscription_definitions.rb index 69c55c151..500b4ee39 100644 --- a/ruby/lib/jam_ruby/subscription_definitions.rb +++ b/ruby/lib/jam_ruby/subscription_definitions.rb @@ -38,7 +38,8 @@ module JamRuby max_players: 4, pro_audio: false, has_support: false, - name: 'Free' + name: 'Free', + rank: 0, } @@ -56,7 +57,8 @@ module JamRuby max_players: nil, pro_audio: false, has_support: false, - name: 'Silver' + name: 'Silver', + rank: 1, } GOLD_PLAN = { @@ -73,7 +75,8 @@ module JamRuby max_players: nil, pro_audio: true, has_support: true, - name: 'Gold' + name: 'Gold', + rank: 2 } PLATINUM_PLAN = { @@ -90,11 +93,12 @@ module JamRuby max_players: nil, pro_audio: true, has_support: true, - name: 'Platinum' + name: 'Platinum', + rank: 3 } def self.rules(plan_code) - if plan_code == nil + if plan_code == nil || plan_code == '' FREE_PLAN elsif plan_code == JAM_SILVER || plan_code == JAM_SILVER_YEARLY SILVER_PLAN @@ -106,5 +110,12 @@ module JamRuby raise "unknown plan #{plan_code}" end end + + def self.is_downgrade(next_plan, current_plan) + next_plan_rank = rules(next_plan)[:rank] + current_plan_rank = rules(current_plan)[:rank] + + next_plan_rank < current_plan_rank + end end end diff --git a/ruby/spec/jam_ruby/subscription_definitions_spec.rb b/ruby/spec/jam_ruby/subscription_definitions_spec.rb new file mode 100644 index 000000000..23c26b05c --- /dev/null +++ b/ruby/spec/jam_ruby/subscription_definitions_spec.rb @@ -0,0 +1,16 @@ +require 'spec_helper' + +describe SubscriptionDefinitions do + + + it "is downgrade " do + SubscriptionDefinitions.is_downgrade('jamsubgold', 'jamsubplatinum').should be_true + SubscriptionDefinitions.is_downgrade('jamsubplatinum', 'jamsubgold').should be_false + SubscriptionDefinitions.is_downgrade('jamsubgold', 'jamsubgold').should be_false + SubscriptionDefinitions.is_downgrade('jamsubgold', 'jamsubgoldyearly').should be_false + SubscriptionDefinitions.is_downgrade('jamsubgoldyearly', 'jamsubgold').should be_false + SubscriptionDefinitions.is_downgrade(nil, 'jamsubgold').should be_true + SubscriptionDefinitions.is_downgrade('jamsubsilver', nil).should be_false + SubscriptionDefinitions.is_downgrade('jamsubsilveryearly', nil).should be_false + end +end diff --git a/web/app/controllers/api_music_sessions_controller.rb b/web/app/controllers/api_music_sessions_controller.rb index 860799ded..bc6fab899 100644 --- a/web/app/controllers/api_music_sessions_controller.rb +++ b/web/app/controllers/api_music_sessions_controller.rb @@ -440,7 +440,7 @@ class ApiMusicSessionsController < ApiController succeeded = JamRuby::ElasticSearch.new.session_ratings(@history.music_session, current_user, backend_details) - body << succeeded ? "Stored in ElasticSearch" : "Unable to store in ElasticSearch!" + body << (succeeded ? "Stored in ElasticSearch" : "Unable to store in ElasticSearch!") AdminMailer.jamclass_alerts({subject: subject, body: body}).deliver_now rescue Exception => e puts "Exception sending out ratings email. Boo #{e}"