diff options
Diffstat (limited to 'lib/customer.rb')
| -rw-r--r-- | lib/customer.rb | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/lib/customer.rb b/lib/customer.rb new file mode 100644 index 0000000..c2ce3b0 --- /dev/null +++ b/lib/customer.rb @@ -0,0 +1,46 @@ +class Customer + attr_reader :name + + def initialize(name) + @name = name + @rentals = [] + end + + def add_rental(arg) + @rentals << arg + end + + def statement + total_amount, frequent_renter_points = 0, 0 + result = "Rental Record for #{@name}\n" + @rentals.each do |element| + this_amount = 0 + + # determine amounts for each line + case element.movie.price_code + when Movie::REGULAR + this_amount += 2 + this_amount += (element.days_rented - 2) * 1.5 if element.days_rented > 2 + when Movie::NEW_RELEASE + this_amount += element.days_rented * 3 + when Movie::CHILDRENS + this_amount += 1.5 + this_amount += (element.days_rented - 3) * 1.5 if element.days_rented > 3 + end + + # add frequent renter points + frequent_renter_points += 1 + # add bonus for a two day new release rental + if element.movie.price_code == Movie.NEW_RELEASE && element.days_rented > 1 + frequent_renter_points += 1 + end + # show figures for this rental + result += "\t" + element.movie.title + "\t" + this_amount.to_s + "\n" + total_amount += this_amount + end + # add footer lines + result += "Amount owed is #{total_amount}\n" + result += "You earned #{frequent_renter_points} frequent renter points" + result + end +end |
