Commit de16257d8ce9c7588bb0e17a5272f2b71ed88c2f

Authored by Leandro Santos
1 parent 21953638

refactoring export data

Showing 1 changed file with 12 additions and 5 deletions   Show diff stats
script/export_ranking.rb
... ... @@ -2,14 +2,19 @@
2 2  
3 3 require 'csv'
4 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']
  5 + categories = [:article_author, :comment_author, :comment_article_author, :vote_voteable_author, :vote_voter, :follower, :followed_article_author]
  6 + categories_labels = ['autor do artigo', 'autor do comentário', 'comentário recebido no meu artigo', 'voto em meu conteúdo', 'voto realizado', 'seguir artigo', 'autor de artigo seguido']
  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', 'quatidade de vezes que eu segui', 'quantidade de vezes que meus artigos foram seguidos']
8 8  
9 9 csv << ['identifier', 'name', 'score'] + categories_labels + quantities_labels
  10 + amount = Person.count
  11 + count = 0
10 12 Person.find_each do |person|
11   - categories_values = categories.map {|c| person.score_points(category: c).sum(:num_points)}
  13 + count += 1
  14 + gamification_categories = categories.map{ |c| GamificationPlugin::PointsCategorization.for_type(c).first}
  15 + categories_values = gamification_categories.map{|c| person.score_points(c.id.to_s).sum(:num_points)}
12 16 person_articles = Article.where(:author_id => person.id)
  17 + puts "Exporting '#{person.identifier}' #{count}/#{amount}"
13 18  
14 19 quantities_values = [
15 20 Vote.for_voter(person).count,
... ... @@ -18,7 +23,9 @@ CSV.open( &quot;ranking_gamification.csv&quot;, &#39;w&#39; ) do |csv|
18 23 person.comments.joins(:votes).where('vote < 0').count + person_articles.joins(:votes).where('vote < 0').count,
19 24 person_articles.text_articles.count,
20 25 person.comments.count,
21   - Comment.where(:source_id => person_articles).count
  26 + Comment.where(:source_id => person_articles).count,
  27 + person.following_articles.count,
  28 + ArticleFollower.where(:article_id => person_articles).count
22 29 ]
23 30 csv << [person.identifier, person.name, person.points] + categories_values + quantities_values
24 31 end
... ...