diff --git a/app/models/user.rb b/app/models/user.rb index ae740e609dc155ce5924f85f14812c1103b1edd5..4c360cd33fd4e63bbf35954f926421151e5c6e5f 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 c18f1b5cb9927e57e2def31abb15b779dc454d0b..5fc4ef8b13b8dd2f58ffcd4ddf6fc077e182fbbb 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