tracks/app/models/stats/totals.rb

89 lines
1.3 KiB
Ruby
Raw Normal View History

module Stats
class Totals
attr_reader :user
def initialize(user)
@user = user
end
def empty?
actions.empty?
end
def tags
@tags ||= tag_ids.size
end
def unique_tags
@unique_tags ||= tag_ids.uniq.size
end
def first_action_at
first_action.try(:created_at)
end
def projects
user.projects.count
end
def active_projects
user.projects.active.count
end
def hidden_projects
user.projects.hidden.count
end
def completed_projects
user.projects.completed.count
end
def contexts
user.contexts.count
end
def visible_contexts
user.contexts.active.count
end
def hidden_contexts
user.contexts.hidden.count
end
def all_actions
actions.count
end
def completed_actions
actions.completed.count
end
def incomplete_actions
actions.not_completed.count
end
def deferred_actions
actions.deferred.count
end
def blocked_actions
actions.blocked.count
end
private
def actions
user.todos
end
def first_action
@first_action ||= user.todos.reorder("created_at ASC").first
end
def tag_ids
@tag_ids ||= Stats::UserTagsQuery.new(user).result.map(&:id)
end
end
end