tab/app/controllers/concerns/statistics.rb

39 lines
855 B
Ruby
Raw Normal View History

2015-09-11 16:04:45 +00:00
class Statistics < Rails::Application
def shameful_users
User.where('balance > :amount', amount: config.shameful_balance)
2015-09-11 21:32:38 +00:00
.order(balance: :desc)
end
def total_debt
User.where.not(id: User.zeus).where('balance > 0').sum(:balance)
2015-09-11 16:04:45 +00:00
end
def shamehash
none_shaming = shameful_users.sum(:balance)
shameful_users.inject({'None-shameful users' => none_shaming}) do |h, u|
h.merge({u.name => u.balance})
end
end
def by_issuer
Transaction.group(:issuer_id).count.inject(Hash.new) do |hash, (id, count)|
hash.merge({User.find(id).name => count})
end
end
def amount_distribution
Transaction.group("round(amount / 10)").count.inject(Hash.new) do |hash, (group, count)|
hash.merge({10 * group.to_i => count})
end
end
2015-09-11 16:04:45 +00:00
private
def zeus_balance
User.zeus.balance
end
end