Skip to content

Instantly share code, notes, and snippets.

@jonathanccalixto
Last active October 3, 2016 19:57
Show Gist options
  • Save jonathanccalixto/d4775633b454b92deaceb27ca3bc9756 to your computer and use it in GitHub Desktop.
Save jonathanccalixto/d4775633b454b92deaceb27ca3bc9756 to your computer and use it in GitHub Desktop.
Evobinary members report
File.open("#{Rails.root}/public/countries.txt", 'w') do |file|
countries = []
Country.all.each do |country|
next if country.sponsors.count.zero?
countries << [country.sponsors.count, country.to_s]
end.nil?
file.puts "=" * 100
countries.sort.reverse.each do |count, name|
file.puts "== #{[name.ljust(35, ' '), count].join(" - ").strip.ljust 94, ' '} =="
end.nil?
file.puts "=" * 100
end
require 'csv'
CSV.open "#{Rails.root}/public/scores.csv", 'w' do |csv|
csv << [User.human_attribute_name(:name), User.human_attribute_name(:nickname), User.human_attribute_name(:email), "Current star score", "Star"]
CSV.foreach "#{Rails.root}/tmp/punctuations.csv" do |name, nickname, email|
puts "#{name.inspect} #{nickname.inspect} #{email.inspect}"
begin
sponsor = Sponsor.find_by_nickname(nickname.strip)
p sponsor
csv << [sponsor.name, sponsor.nickname, sponsor.email, sponsor.current_star_score, sponsor.star]
rescue
csv << [name, nickname, email, nil, nil]
end
end
end
File.open("#{Rails.root}/public/stars.txt", 'w') do |file|
stars = { }
Sponsor.activated.allocated.includes(:user, :score).each do |sponsor|
next if sponsor.star.zero?
member = [
"Score: #{"#{sponsor.current_star_score}".rjust(9, ' ')}",
"Member: #{sponsor.name}".ljust(29, ' '),
"Nickname: #{sponsor.nickname}".ljust(29, ' '),
"Email: #{sponsor.email}".ljust(39, ' '),
"Country: #{sponsor.country}"
].join(" ")
stars[sponsor.star] ||= []
stars[sponsor.star] << member
end.nil?
stars.to_a.sort.each do |star, members|
file.puts "== #{star} #{ star != 1 ? :stars : :star } ".ljust(170, '=')
members.sort.each do |member|
file.puts "== #{member.strip.ljust 164, ' '} =="
end
file.puts "=" * 170
file.puts
end.nil?
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment