Louis | Adds reports on number of bikes sold and average price per year

This commit is contained in:
Loos
2014-12-21 23:36:55 -06:00
parent f7de4ea77a
commit 90b059a46d
5 changed files with 50 additions and 8 deletions
+35
View File
@@ -0,0 +1,35 @@
class Report
@@years = Bike.all.each.map{|bike| Time.parse(bike.date_sold).year if bike.date_sold}
def self.bikes_sold_per_year
counts = Hash.new(0)
@@years.each { |year| counts[year] += 1 }
counts
end
def self.average_price_per_year
prices = Bike.all.each.map{|bike| bike.price}
years_prices = @@years.each_with_index.map{|year, index| {prices[index].to_s.to_sym => year}}
merged_years_prices = years_prices.reduce({}, :merge)
years_prices_grouped = merged_years_prices.group_by{|k, v| v}
average_price_array = years_prices_grouped.each.map{ |k, year_values|
year_prices = year_values.each.map{|pair| pair[0]}
float_prices = year_prices.map{|price| price.to_s.to_f}
average_price = float_prices.inject{ |sum, el| el + sum } / float_prices.size
{k => average_price}
}
average_prices = average_price_array.reduce({}, :merge)
end
def self.yearly_data
unique_years = @@years.uniq
bikes_sold_per_year = Report.bikes_sold_per_year()
average_price_per_year = Report.average_price_per_year()
yearly_data_array = unique_years.map{|year| {year => {number: bikes_sold_per_year[year], average_price: average_price_per_year[year]}}}
yearly_data = yearly_data_array.reduce({}, :merge)
Hash[yearly_data.sort]
end
end
-5
View File
@@ -1,5 +0,0 @@
class Report
def self.bikes_sold_per_year
"KITTIES"
end
end