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