From dafc63e3a0627d7bb253fdf940c575632eb5229f Mon Sep 17 00:00:00 2001
From: Neil Lalonde <neillalonde@gmail.com>
Date: Fri, 22 Aug 2014 14:37:00 -0400
Subject: [PATCH] Show how many likes users received in the last 100 days on
 their admin profile page

---
 .../javascripts/admin/templates/user_index.js.handlebars     | 1 +
 app/models/user.rb                                           | 4 ++++
 app/serializers/admin_detailed_user_serializer.rb            | 5 +++++
 config/locales/client.en.yml                                 | 1 +
 4 files changed, 11 insertions(+)

diff --git a/app/assets/javascripts/admin/templates/user_index.js.handlebars b/app/assets/javascripts/admin/templates/user_index.js.handlebars
index 688b96013..a6e07957e 100644
--- a/app/assets/javascripts/admin/templates/user_index.js.handlebars
+++ b/app/assets/javascripts/admin/templates/user_index.js.handlebars
@@ -321,6 +321,7 @@
   <div class='display-row'>
     <div class='field'>{{i18n admin.user.like_count}}</div>
     <div class='value'>{{like_count}}</div>
+    <div class='controls'>{{like_count_last_100_days}} {{i18n admin.user.last_100_days}}</div>
   </div>
   <div class='display-row'>
     <div class='field'>{{i18n admin.user.topics_entered}}</div>
diff --git a/app/models/user.rb b/app/models/user.rb
index 81f555948..d220e2776 100644
--- a/app/models/user.rb
+++ b/app/models/user.rb
@@ -375,6 +375,10 @@ class User < ActiveRecord::Base
     UserAction.where(user_id: id, action_type: UserAction::WAS_LIKED).count
   end
 
+  def like_count_since(time)
+    UserAction.where(user_id: id, action_type: UserAction::WAS_LIKED).where('created_at > ?', time).count
+  end
+
   def post_count
     stat = user_stat || create_user_stat
     stat.post_count
diff --git a/app/serializers/admin_detailed_user_serializer.rb b/app/serializers/admin_detailed_user_serializer.rb
index 030e6aded..09371c8e2 100644
--- a/app/serializers/admin_detailed_user_serializer.rb
+++ b/app/serializers/admin_detailed_user_serializer.rb
@@ -7,6 +7,7 @@ class AdminDetailedUserSerializer < AdminUserSerializer
              :can_revoke_moderation,
              :can_impersonate,
              :like_count,
+             :like_count_last_100_days,
              :post_count,
              :topic_count,
              :flags_given_count,
@@ -52,6 +53,10 @@ class AdminDetailedUserSerializer < AdminUserSerializer
     object.moderator
   end
 
+  def like_count_last_100_days
+    object.like_count_since(100.days.ago)
+  end
+
   def topic_count
     object.topics.count
   end
diff --git a/config/locales/client.en.yml b/config/locales/client.en.yml
index 0ab78c2c5..916621f36 100644
--- a/config/locales/client.en.yml
+++ b/config/locales/client.en.yml
@@ -1880,6 +1880,7 @@ en:
         permissions: Permissions
         activity: Activity
         like_count: Likes Received
+        last_100_days: 'in the last 100 days'
         private_topics_count: Private Topics
         posts_read_count: Posts Read
         post_count: Posts Created