From edbd3b1c6d318d22b2d915258736f971b1ef227b Mon Sep 17 00:00:00 2001 From: Jonathan Kolyer Date: Sat, 31 May 2014 19:09:18 +0000 Subject: [PATCH] VRFS-1664 new musicians email --- ruby/lib/jam_ruby/app/mailers/user_mailer.rb | 4 +- .../models/email_batch_new_musician.rb | 93 ++++++++++++++----- .../models/email_batch_scheduled_sessions.rb | 49 +++++----- ruby/lib/jam_ruby/models/email_batch_set.rb | 11 +++ ruby/lib/jam_ruby/models/music_session.rb | 1 + ruby/lib/jam_ruby/models/user.rb | 3 + .../email_batch_spec_scheduled_session.rb | 2 +- 7 files changed, 111 insertions(+), 52 deletions(-) diff --git a/ruby/lib/jam_ruby/app/mailers/user_mailer.rb b/ruby/lib/jam_ruby/app/mailers/user_mailer.rb index 9b2406c0d..29ddc3e68 100644 --- a/ruby/lib/jam_ruby/app/mailers/user_mailer.rb +++ b/ruby/lib/jam_ruby/app/mailers/user_mailer.rb @@ -102,8 +102,8 @@ end end - def new_musicians(user, new_nearby, host='www.jamkazam.com') - @user, @new_nearby, @host = user, new_nearby, host + def new_musicians(user, new_musicians, host='www.jamkazam.com') + @user, @new_musicians, @host = user, new_musicians, host sendgrid_recipients([user.email]) sendgrid_substitute('@USERID', [user.id]) diff --git a/ruby/lib/jam_ruby/models/email_batch_new_musician.rb b/ruby/lib/jam_ruby/models/email_batch_new_musician.rb index cd66816b0..367cbd143 100644 --- a/ruby/lib/jam_ruby/models/email_batch_new_musician.rb +++ b/ruby/lib/jam_ruby/models/email_batch_new_musician.rb @@ -8,38 +8,89 @@ module JamRuby VAR_MUSICIAN_COUNT = "@MUSICIAN_COUNT" VAR_MUSICIAN_TABLE = "@MUSICIAN_TABLE" + TMP_NEW = 'tmp_new_musicians' + TMP_RECEIVERS = 'tmp_receivers_new_musicians' + def self.subject "New musicians with good Internet connections to you have joined JamKazam!" end - def fetch_recipients(since=nil) - since ||= Time.now - SINCE_DAYS.days - User.geocoded_users - .email_opt_in - .where(['created_at < ?', since]) - .find_in_batches(batch_size: EmailBatchNewMusician::BATCH_SIZE) do |users| - new_musicians = users.inject({}) do |hh, uu| - if 0 < (nearby = uu.nearest_musicians).count - hh[uu] = nearby - end - hh + # inserts eligible sessions to temp table + def _fetch_new_musicians + ActiveRecord::Base.connection.execute("DROP TABLE IF EXISTS #{TMP_NEW}") + sql =< '#{time_since_last_batch(SINCE_DAYS)}' +SQL + ActiveRecord::Base.connection.execute(sql) + end + + def _fetch_eligible_receivers + ActiveRecord::Base.connection.execute("DROP TABLE IF EXISTS #{TMP_RECEIVERS}") + # load eligible recipients into tmp table + sql =< ?', time_since_last_batch(SINCE_DAYS)]) - # .where(['scheduled_start >= ?', Time.now() + MIN_HOURS_START.hours]) - # .find_each do |ss| - # block_given? ? yield(ss) : objs << ss - # end - # objs - # end - # inserts eligible sessions to temp table - def prep_tmp_table + def _collect_eligible_sessions ActiveRecord::Base.connection.execute("DROP TABLE IF EXISTS #{TMP_SNAP}") sql =<