/// <summary> /// Constructor. /// </summary> public CheckoutManager() { _order = new OrderHeader() { OrderLines = new List <OrderLine>() }; _kataItemsDatabaseAccess = DatabaseFactory.GetKataItemsDatabaseAccess(Enums.KataItemsDatabaseAccessType.MockData); }
/// <summary> /// Returns an implementation of the IOrderLinePriceCalculator interface. /// </summary> /// <param name="priceCalculationType">The type of IOrderLinePriceCalculator to return (WithoutDiscount or WithDiscount)</param> /// <returns>An implementation of the IOrderLinePriceCalculator interface.</returns> internal static IOrderLinePriceCalculator GetOrderLinePriceCalculator(PriceCalculationType priceCalculationType) { IKataItemsDatabaseAccess kataItemsDatabaseAccess = DatabaseFactory.GetKataItemsDatabaseAccess(KataItemsDatabaseAccessType.MockData); switch (priceCalculationType) { case PriceCalculationType.WithoutDiscount: return(new OrderLinePriceCalculatorWithoutDiscount(kataItemsDatabaseAccess)); case PriceCalculationType.WithDiscount: return(new OrderLinePriceCalculatorWithDiscount(kataItemsDatabaseAccess)); default: throw new Exception("Invalid PriceCalculationType enum provided to SortedCheckoutKata.HelperLibraries.HelperLibrariesFactory.GetOrderLinePriceCalculator method."); } }
/// <summary> /// Constructor. /// </summary> /// <param name="kataItemsDatabaseAccess">An implementation of the IKataItemsDatabaseAccess interface; used to access the KataItems database.</param> public OrderLinePriceCalculatorWithoutDiscount(IKataItemsDatabaseAccess kataItemsDatabaseAccess) { _kataItemsDatabaseAccess = kataItemsDatabaseAccess; }