Commit 65e1860f8967517f1d011041c65f26b0f4fc88d0

Authored by Victor Costa
1 parent e42f5f69

Improve ranking export

Showing 1 changed file with 25 additions and 0 deletions   Show diff stats
script/export_ranking.rb 0 → 100644
... ... @@ -0,0 +1,25 @@
  1 +# encoding: UTF-8
  2 +
  3 +require 'csv'
  4 +CSV.open( "ranking_gamification.csv", 'w' ) do |csv|
  5 + categories = [:article_author, :comment_author, :comment_article_author, :vote_voteable_author, :vote_voter]
  6 + categories_labels = ['autor do artigo', 'autor do comentário', 'comentário recebido no meu artigo', 'voto em meu conteúdo', 'voto realizado']
  7 + quantities_labels = ['quantidade de votos realizados', 'quantidade de amigos', 'votos positivos recebidos', 'votos negativos recebidos', 'quantidade de artigos', 'quantidade de comentários realizados', 'quantidade de comentários recebidos']
  8 +
  9 + csv << ['identifier', 'name', 'score'] + categories_labels + quantities_labels
  10 + Person.find_each do |person|
  11 + categories_values = categories.map {|c| person.score_points(category: c).sum(:num_points)}
  12 + person_articles = Article.where(:author_id => person.id)
  13 +
  14 + quantities_values = [
  15 + Vote.for_voter(person).count,
  16 + person.friends.count,
  17 + person.comments.joins(:votes).where('vote > 0').count + person_articles.joins(:votes).where('vote > 0').count,
  18 + person.comments.joins(:votes).where('vote < 0').count + person_articles.joins(:votes).where('vote < 0').count,
  19 + person_articles.text_articles.count,
  20 + person.comments.count,
  21 + Comment.where(:source_id => person_articles).count
  22 + ]
  23 + csv << [person.identifier, person.name, person.points] + categories_values + quantities_values
  24 + end
  25 +end
... ...