24 lines
659 B
Ruby
24 lines
659 B
Ruby
class LifePex::User < Sequel::Model(:users)
|
|
one_to_many :user_pexs
|
|
one_to_many :pexs
|
|
one_to_many :recalls
|
|
|
|
def password=(clear_password)
|
|
self.hashed_password = BCrypt::Password.create(clear_password)
|
|
end
|
|
|
|
def recalls_not_validated(cached: true)
|
|
@recalls_not_validated = nil if !cached
|
|
|
|
pexs = LifePex::Pex.setup_user_pexs(user_id: id, user_pexs: user_pexs)
|
|
|
|
@recalls_not_validated ||= recalls.filter do |recall|
|
|
pex = pexs[recall[:pex_id]]
|
|
validated = pex[:count_by_date].filter do |date, _|
|
|
date >= Date.today - recall[:span_duration]
|
|
end.values.sum
|
|
validated < recall[:repeated]
|
|
end
|
|
end
|
|
end
|