/// <summary> /// This will calculate the total bill for the items in the shopping cart /// </summary> /// <param name="shoppingCart">list of items added to the shopping cart </param> /// <param name="offersExist">true, if any offers available for the products</param> /// <returns>total amount</returns> private double calculateTotal(List <String> shoppingCart, bool offersExist) { int total = 0; int apples = shoppingCart.GroupBy(x => x).ToDictionary(x => x.Key, x => x.Count()).Where(x => x.Key == APPLE).FirstOrDefault().Value; if (offersExist) { total += offerServiceFactory.offerFor(APPLE).Apply(apples, APPLE_COST); } else { total += _priceCalculation.Apply(apples, APPLE_COST); } int oranges = shoppingCart.GroupBy(x => x).ToDictionary(x => x.Key, x => x.Count()).Where(x => x.Key == ORANGE).FirstOrDefault().Value; if (offersExist) { total += offerServiceFactory.offerFor(ORANGE).Apply(oranges, ORANGE_COST); } else { total += _priceCalculation.Apply(oranges, ORANGE_COST); } return(total); }
/// <summary> /// This will calculate the total bill for the items in the shopping cart /// </summary> /// <param name="shoppingCart">list of items added to the shopping cart </param> /// <returns>total amount</returns> private int calculateTotal(List <String> shoppingCart) { int total = 0; int apples = shoppingCart.GroupBy(x => x).ToDictionary(x => x.Key, x => x.Count()).Where(x => x.Key == "Apple").FirstOrDefault().Value; total += _priceCalculation.Apply(apples, APPLE_COST); int oranges = shoppingCart.GroupBy(x => x).ToDictionary(x => x.Key, x => x.Count()).Where(x => x.Key == "Orange").FirstOrDefault().Value; total += _priceCalculation.Apply(oranges, ORANGE_COST); return(total); }