extract_gamification_itens 4.45 KB
#!/usr/bin/env ruby
require File.dirname(__FILE__) + '/../config/environment'


communities = Community.public(:order => :created_at)

file = File.open('communities.csv', 'w+')

file.write("'Identifier','Qtd Artigos'\n")
communities.map do |c|
  line = "'#{c.identifier}','#{c.articles.count}'\n"
  puts line
  file.write(line)
end

file.write("\n")
file.write("'Identifier','Qtd Membros'\n")
communities.map do |c|
  line = "'#{c.identifier}','#{c.members.count}'\n"
  puts line
  file.write(line)
end
  
file.write("\n")
file.write("'Identifier','Qtd Atividades'\n")
communities.map do |c|
  line = "'#{c.identifier}','#{c.activities.count}'\n"
  puts line
  file.write(line)
end

file.close

file = File.open('artigos.csv', 'w+')
articles = Article.public(:order => :created_at)

file.write("\n")
file.write("'ID','Views'\n")
articles.map do |a|
  line = "'#{a.id}','#{a.hits}'\n"
  puts line
  file.write(line)
end

file.write("\n")
file.write("'ID','Comentarios'\n")
articles.map do |a|
  line = "'#{a.id}','#{a.comments.count}'\n"
  puts line
  file.write(line)
end

file.write("\n")
file.write("'ID','Votos'\n")
articles.map do |a|
  line = "'#{a.id}','#{a.votes.count}'\n"
  puts line
  file.write(line)
end

file.close
file = File.open('people.csv', 'w+')
people = Person.public(:order => :created_at)


file.write("'Identifier','Qtd Curtidas recebidas'\n")
people.map do |p|
  amount = 0
  p.articles.text_articles.select(:id).map do |article|
    amount += Vote.count(:conditions => {:voteable_id => article.id, :vote => 1})
  end
  Comment.all(:conditions => {:source_id => p.articles.map{|a|a.id}}, :select => :id).map do |comment|
    amount += Vote.count(:conditions => {:voteable_id => comment.id, :vote => 1})
  end
  line = "'#{p.identifier}','#{amount}'\n"
  puts line
  file.write(line)
end

file.write("\n")
file.write("'Identifier','Qtd Dislikes recebidos'\n")
people.map do |p|
  amount = 0
  p.articles.text_articles.select(:id).map do |article|
    amount += Vote.count(:conditions => {:voteable_id => article.id, :vote => -1})
  end
  Comment.all(:conditions => {:source_id => p.articles.map{|a|a.id}}, :select => :id).map do |comment|
    amount += Vote.count(:conditions => {:voteable_id => comment.id, :vote => -1})
  end
  line = "'#{p.identifier}','#{amount * -1}'\n"
  puts line
  file.write(line)
end

file.write("\n")
file.write("'Identifier','Qtd Curtidas realizadas'\n")
people.map do |p|
  line = "'#{p.identifier}','#{Vote.count(:conditions => {:voter_id => p.id})}'\n"
  puts line
  file.write(line)
end

file.write("\n")
file.write("'Identifier','Qtd Artigos'\n")
people.map do |p|
  line = "'#{p.identifier}','#{p.articles.count}'\n"
  puts line
  file.write(line)
end

file.write("\n")
file.write("'Identifier','Qtd Comentarios Criados'\n")
people.map do |p|
  line = "'#{p.identifier}','#{Comment.count(:conditions => {:author_id => p.id})}'\n"
  puts line
  file.write(line)
end

file.write("\n")
file.write("'Identifier','Qtd Comentarios Recebidos'\n")
people.map do |p|
  line = "'#{p.identifier}','#{p.comments_received.count}'\n"
  puts line
  file.write(line)
end

file.write("\n")
file.write("'Identifier','Qtd Amigos'\n")
people.map do |p|
  line = "'#{p.identifier}','#{p.friends.count}'\n"
  puts line
  file.write(line)
end

file.write("\n")
file.write("'Identifier','Qtd de Comunidades'\n")
people.map do |p|
  line = "'#{p.identifier}','#{p.communities.count}'\n"
  puts line
  file.write(line)
end

file.write("'Identifier','Qtd de Videos Publicados'\n")
people.map do |p|
  line = "'#{p.identifier}','#{p.articles.where(:type => 'VideoPlugin::Video').count}'\n"
  puts line
  file.write(line)
end

file.write("\n")
file.write("'Identifier','Dono de Comunidade com Pessoas'\n")
people.map do |p|
  amount = 0
  communities.map do |community|
    amount += 1 if community.admins.include?(p) 
  end
  line = "'#{p.identifier}','#{amount}'\n"
  puts line
  file.write(line)
end

file.write("'Identifier','Qtd Artigos com Conteudo Negativo'\n")
people.map do |p|
  amount = 0
  p.articles.text_articles.select(:id).map do |article|
    amount += Vote.count(:conditions => {:voteable_id => article.id, :vote => -1})
  end
  line = "'#{p.identifier}','#{amount * -1}'\n"
  puts line
  file.write(line)
end

file.write("\n")
file.write("'Identifier','Qtd Artigos que nao pode ser comentado'\n")
people.map do |p|
  amount = 0
  p.articles.text_articles.map do |article|
    amount += 1 if article.moderate_comments?
  end
  line = "'#{p.identifier}','#{amount}'\n"
  puts line
  file.write(line)
end