diff --git a/conferences/13-inheritance/accounting/Cart.cs b/conferences/13-inheritance/accounting/Cart.cs index ea03444..fb9a17d 100644 --- a/conferences/13-inheritance/accounting/Cart.cs +++ b/conferences/13-inheritance/accounting/Cart.cs @@ -1,4 +1,5 @@ -namespace Accounting +using System; +namespace Accounting { public class Cart { @@ -31,7 +32,11 @@ public virtual IEnumerable Products() public void Add(Product product) { - this.products.Add(product); + int index = products.FindIndex(p => p.Name == product.Name && p.GetType() == product.GetType()); + if (index == -1) + this.products.Add(); + else + this.products[index].AddUnits(product.Units); } } diff --git a/conferences/13-inheritance/accounting/Product.cs b/conferences/13-inheritance/accounting/Product.cs index 3c0e0d4..9791a96 100644 --- a/conferences/13-inheritance/accounting/Product.cs +++ b/conferences/13-inheritance/accounting/Product.cs @@ -18,13 +18,18 @@ public virtual int TotalCost() return this.Price * this.Units; } + public virtual void AddUnits(int units) + { + this.Units += units; + } + public override string ToString() { return $"{this.Name} - ${this.Price} (x{this.Units}) = ${this.TotalCost()}"; } } - public class DiscountProduct: Product + public class DiscountProduct : Product { public double Discount { get; private set; } diff --git a/conferences/13-inheritance/app/Program.cs b/conferences/13-inheritance/app/Program.cs index e89f056..ee6de10 100644 --- a/conferences/13-inheritance/app/Program.cs +++ b/conferences/13-inheritance/app/Program.cs @@ -8,8 +8,8 @@ class Program new Product("🐟 Pescado (kg)", 100, 10), new Product("🐔 Pollo (kg)", 150, 1), new Product("🐔 Pollo (kg)", 150, 5), - new Product("🥚 Huevo", 10, 1), - new Product("🥚 Huevos (caja)", 10, 30), + new Product("🥚 Huevos (unidades)", 10, 1), + new Product("🥚 Huevos (unidades)", 10, 30), }; static void Main()