Created
July 5, 2018 22:04
-
-
Save eseca/a610f79a6641ba08cdae71b40508078a to your computer and use it in GitHub Desktop.
EasyBroker_test001
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
class Product | |
attr_reader :name, :description, :price_cents | |
def initialize(name, description, price_cents) | |
@name = name | |
@description = description | |
@price_cents = price_cents | |
end | |
def price | |
return @price_cents / 100 | |
end | |
end | |
class Discount | |
attr_reader :name, :condition, :off_percent | |
def initialize(name, off_percent, condition) | |
@name = name | |
@off_percent = off_percent | |
@condition = condition | |
end | |
def label | |
return "#{off_percent * 100}%" | |
end | |
end | |
class ShopingCar | |
attr_accessor :products | |
def initialize | |
@discounts = [] | |
end | |
def total_cents | |
return products.map(&:price_cents).sum | |
end | |
def total | |
return total_cents / 100 | |
end | |
def receipt | |
list = products.map do |product| | |
"#{product.name}: #{product.price}" | |
end | |
receipt = [] | |
receipt << list.join("\n") | |
receipt << "Total: #{total}" | |
final_total_cents = total_cents | |
unless @discounts.empty? | |
receipt << "Discounts :)" | |
@discounts.each do |discount| | |
final_total_cents *= 1 - discount.off_percent | |
receipt << "#{discount.name}: #{discount.label}" | |
end | |
end | |
receipt << "Final total: #{final_total_cents/100}" | |
return receipt.join("\n") | |
end | |
def apply_discount(discount) | |
if total_cents > discount.condition | |
@discounts << discount | |
end | |
end | |
end | |
def main | |
products = [] | |
products << Product.new( "Balero pequeño", "Rojo. 20gr", 2000 ) | |
products << Product.new("Balero grande", "Rojo. 80gr", 8000) | |
products << Product.new( "Balero chino", "Rojo. 50gr", 5000 ) | |
discount = Discount.new("Navidad", 0.05, 10000) | |
car = ShopingCar.new | |
car.products = products | |
car.apply_discount(discount) | |
puts car.receipt | |
end | |
main() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment