From 4cbcb2129d0cec5468754c35df3ab24e70cf2c64 Mon Sep 17 00:00:00 2001
From: tmn21 <tmn21@inf.ufpr.br>
Date: Wed, 24 May 2023 11:51:38 -0300
Subject: [PATCH] ISSUE #38: CREATE streak route

---
 app/models/user.rb | 23 +++++++++++++++++++++++
 app/models/view.rb |  1 +
 2 files changed, 24 insertions(+)

diff --git a/app/models/user.rb b/app/models/user.rb
index ae740e609..4c360cd33 100644
--- a/app/models/user.rb
+++ b/app/models/user.rb
@@ -79,6 +79,8 @@
 #  level                  :integer          default("1")
 #  points                 :integer          default("0")
 #  last_sign_in_day       :datetime
+#  last_action_at         :date
+#  streak                 :integer          default("0")
 
 class User < ApplicationRecord
   include Followable
@@ -385,6 +387,27 @@ class User < ApplicationRecord
     end
   end
 
+  def update_streak()
+    if self.last_action_at==Date.today
+      return
+    end
+    
+    # increase streak count
+    if self.last_action_at==Date.yesterday    
+      self.update(last_action_at: Date.today)
+      self.update(streak: streak+1)
+      return
+    end
+    
+    # restart streak count 
+    if Date.today - self.last_action_at >= 2
+      self.update(last_action_at: Date.today)
+      self.update(streak: 1)
+    end
+
+  end
+
+
   def complete_action(action, quantity=1)
     return false, { "error": "action not found"} if action.blank?
 
diff --git a/app/models/view.rb b/app/models/view.rb
index c18f1b5cb..5fc4ef8b1 100644
--- a/app/models/view.rb
+++ b/app/models/view.rb
@@ -62,6 +62,7 @@ class View < ApplicationRecord
     if !user.nil?
       if viewable_type == "LearningObject"
         user.complete_action(Action.find_by_name("Visualizar um Recurso"))
+        user.update_streak()
         viewable.subjects.each do |subject|
           user.complete_action(Action.find_by_name("Visualizar um Recurso de #{subject.name}"))
         end
-- 
GitLab