Sha256: bc3da16e82bb8ae6e70c5ec32502833e4241828d3753e66da772342e6594b4be
Contents?: true
Size: 1.38 KB
Versions: 3
Compression:
Stored size: 1.38 KB
Contents
class UserStats < ApplicationRecord belongs_to :organization belongs_to :user def self.stats_for(user) UserStats.find_or_initialize_by(user: user, organization: Organization.current) end def self.exp_for(user) self.stats_for(user).exp end def activity(date_range = nil) date_filter = { updated_at: date_range }.compact { exercises: { solved_count: organization_exercises .joins(:assignments) .where(assignments: { top_submission_status: [:passed, :skipped], submitter: user, organization: organization }.merge(date_filter)) .count, count: organization_exercises.count }, messages: messages_in_discussions_count(date_range) } end def add_exp!(points) self.exp += points end private def messages_in_discussions_count(date_range = nil) date_filter = { created_at: date_range }.compact result = Message.joins(:discussion) .where({sender: user.uid, deletion_motive: nil, discussions: { organization: organization }}.merge(date_filter)) .group(:approved) .count unapproved = result[false] || 0 approved = result[true] || 0 { count: unapproved + approved, approved: approved } end def organization_exercises @organization_exercises ||= organization.exercises end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
mumuki-domain-9.9.0 | app/models/user_stats.rb |
mumuki-domain-9.8.1 | app/models/user_stats.rb |
mumuki-domain-9.8.0 | app/models/user_stats.rb |