diff --git a/jam-ui/src/components/affiliate/JKAffiliateSignup.js b/jam-ui/src/components/affiliate/JKAffiliateSignup.js
index cca8ebfc1..5ea5b9b30 100644
--- a/jam-ui/src/components/affiliate/JKAffiliateSignup.js
+++ b/jam-ui/src/components/affiliate/JKAffiliateSignup.js
@@ -9,7 +9,7 @@ const JKAffiliateSignup = ({signup}) => {
{greaterThan.sm ? (
| {signup.month} |
- {signup.visits} |
+ {/*{signup.visits} | */}
{signup.signups} |
) : (
@@ -17,11 +17,11 @@ const JKAffiliateSignup = ({signup}) => {
{signup.month}
-
+ {/*
Visits: {signup.visits}
-
+
*/}
Signups: {signup.signups}
diff --git a/ruby/lib/jam_ruby/models/affiliate_partner.rb b/ruby/lib/jam_ruby/models/affiliate_partner.rb
index 8c3a7f354..2cdbb6bf3 100644
--- a/ruby/lib/jam_ruby/models/affiliate_partner.rb
+++ b/ruby/lib/jam_ruby/models/affiliate_partner.rb
@@ -227,7 +227,8 @@ class JamRuby::AffiliatePartner < ActiveRecord::Base
tally_monthly_payments(quarter_info[:year], quarter_info[:quarter])
tally_quarterly_payments(quarter_info[:year], quarter_info[:quarter])
- tally_traffic_totals(GenericState.affiliate_tallied_at, day)
+ # we aren't tracking visits anymore, so we don't need to tally_traffic_totals
+ #tally_traffic_totals(GenericState.affiliate_tallied_at, day)
tally_partner_totals
@@ -437,6 +438,34 @@ class JamRuby::AffiliatePartner < ActiveRecord::Base
close_months(year, quarter)
end
+ # This was added because the tally_traffic_totals runs once a day, which is not often enough to get a fresh count of signups
+ # so as users sign up, we increment the signups count for the day
+ # jam=# \d affiliate_traffic_totals
+ # Table "public.affiliate_traffic_totals"
+ # Column | Type | Modifiers
+ #----------------------+-----------------------------+------------------------
+ # day | date | not null
+ # signups | integer | not null default 0
+ # visits | integer | not null default 0
+ # affiliate_partner_id | integer | not null
+ # created_at | timestamp without time zone | not null default now()
+
+ def self.increment_signups(user)
+ sql = "SELECT count(day) FROM affiliate_traffic_totals WHERE day = '#{user.created_at.to_date}' AND affiliate_partner_id = #{user.affiliate_referral_id}"
+ count = ActiveRecord::Base.connection.execute(sql)
+ if count > 0
+ sql = %{
+ UPDATE affiliate_traffic_totals SET signups = signups + 1 WHERE day = '#{user.created_at.to_date}' AND affiliate_partner_id = #{user.affiliate_referral_id}
+ }
+ else
+ sql = %{
+ INSERT INTO affiliate_traffic_totals (day, signups, visits, affiliate_partner_id) VALUES ('#{user.created_at.to_date}', 1, 0, #{user.affiliate_referral_id})
+ }
+ end
+ ActiveRecord::Base.connection.execute(sql)
+
+ end
+
def self.tally_partner_totals
sql = %{
UPDATE affiliate_partners SET
@@ -460,6 +489,8 @@ class JamRuby::AffiliatePartner < ActiveRecord::Base
return
end
+ # Because we now increment_signups, as users sign up, it's possible this row already exists. however, if there were no signups and only visits, there may still not be a row here.
+ # So we need to insert the rows, and if they already exist, the INSERT will be a no-op, as long as we also update this statement to not fail if the row already exists.
sql = %{
INSERT INTO affiliate_traffic_totals(SELECT day, 0, 0, ap.id FROM affiliate_partners AS ap CROSS JOIN (select (generate_series('#{start_date}', '#{end_date - 1}', '1 day'::interval))::date as day) AS lurp)
}
diff --git a/ruby/lib/jam_ruby/models/user.rb b/ruby/lib/jam_ruby/models/user.rb
index 491cfedec..eab4d54a3 100644
--- a/ruby/lib/jam_ruby/models/user.rb
+++ b/ruby/lib/jam_ruby/models/user.rb
@@ -1865,6 +1865,9 @@ module JamRuby
if user.affiliate_referral = AffiliatePartner.find_by_id(affiliate_referral_id)
user.save
+ if !user.errors.any?
+ AffiliatePartner.increment_signups(user)
+ end
end if affiliate_referral_id.present?