class FundraisingProgram::FundRequest
Attributes
name[RW]
Public Class Methods
new(name)
click to toggle source
# File lib/fundraising_program/fundrequest.rb, line 10 def initialize(name) @name = name @projects = [] end
Public Instance Methods
add_project(project)
click to toggle source
# File lib/fundraising_program/fundrequest.rb, line 31 def add_project(project) @projects << project end
fully_funded_projects()
click to toggle source
# File lib/fundraising_program/fundrequest.rb, line 62 def fully_funded_projects @projects.select { |project| project.fully_funded? } end
load_projects(from_file)
click to toggle source
# File lib/fundraising_program/fundrequest.rb, line 15 def load_projects(from_file) File.readlines(from_file).each do |line| add_project(Project.from_csv(line)) end end
print_project_funding_left(project)
click to toggle source
# File lib/fundraising_program/fundrequest.rb, line 54 def print_project_funding_left(project) "#{project.name}".ljust(30, '.') + "#{project.funding_left}" end
print_project_stats(project)
click to toggle source
# File lib/fundraising_program/fundrequest.rb, line 50 def print_project_stats(project) "#{project.name}".ljust(30, '.') + "#{project.funding}".ljust(9,'.') + "#{project.target_funding}" end
print_stats()
click to toggle source
# File lib/fundraising_program/fundrequest.rb, line 66 def print_stats puts "\nStats for #{@name}" # fully_funded, under_funded = @projects.partition { |project| project.fully_funded? } fully_funded = fully_funded_projects under_funded = under_funded_projects puts "\nFully funded projecs:" fully_funded.each { |project| puts print_project_stats(project) } puts "\nUnder funded projecs:" under_funded.each { |project| puts print_project_stats(project) } puts "\nProjects with more fundings left" under_funded.sort.each { |project| puts print_project_funding_left(project) } @projects.each do |project| puts "\nProject #{project.name} pledges:" project.each_pledge do |pledge| puts "$#{pledge.amount} in #{pledge.name} pledges" end puts "$#{project.pledges_amount} in total pledges" end # @projects.sort.each { |project| puts print_project_funding_left(project) unless project.fully_funded? } end
request_funding(rounds)
click to toggle source
# File lib/fundraising_program/fundrequest.rb, line 35 def request_funding(rounds) pledges = PledgePool::PLEDGES puts "There are #{pledges.size} pledges:" pledges.each do |pledge| puts "\tA #{pledge.name} plage is worth #{pledge.amount}" end 1.upto(rounds) do |round| puts "\nRequest Funding on Round: #{round}" @projects.each do |project| FundingRound.take_turn(project) end end end
save_under_funded_projects(to_file)
click to toggle source
# File lib/fundraising_program/fundrequest.rb, line 21 def save_under_funded_projects(to_file) File.open(to_file, "w") do |file| file.puts "Under funded projecs:" under_funded_projects.each do |project| file.puts print_project_stats(project) # file << print_project_stats(project) end end end
total_pledges_amount()
click to toggle source
def print_project_stats
(project)
puts "#{project.name}".ljust(30,'.') + "#{project.funding_left}"
end
# File lib/fundraising_program/fundrequest.rb, line 97 def total_pledges_amount @projects.each.reduce(0) { |sum, project| sum += project.pledges_amount } end
under_funded_projects()
click to toggle source
# File lib/fundraising_program/fundrequest.rb, line 58 def under_funded_projects under_funded = @projects.reject { |project| project.fully_funded? } end