private void ShipOrder(ShippingTypes shippingType) { double?shippingCost = 0.0d; //switch (shippingType) //{ // case ShippingTypes.Aramex: // shippingCost = 4.0; // break; // case ShippingTypes.FedEx: // shippingCost = 3.25; // break; // case ShippingTypes.DHL: // shippingCost = 4.5; // break; // case ShippingTypes.USPS: // shippingCost = 5.5; // break; // default: // throw new Exception("Not Supported Shipping Type"); //} OrderStrategyContext orderStrategyContext = new OrderStrategyContext(); shippingCost = orderStrategyContext.CalculateShippingCost(shippingType); Console.WriteLine($"Shipping Cost Over {ShippingType} is {shippingCost}"); Console.WriteLine("Order has been shipped"); }
public double?CalculateShippingCost(ShippingTypes shippingType) { if (strategies.ContainsKey(shippingType)) { return(strategies[shippingType].CalculateShippingCost()); } return(null); }
public Order CreateOrderFromBasket(ShoppingBasket basket, string userId, ShippingTypes shipping, PaymentTypes payment) { Order order = new() { Date = DateTime.Now, UserID = userId, PaymentType = payment, ShippingType = shipping, IsProcessed = false }; foreach (var item in basket.Items) { OrderItem oi = new() { ProductId = item.ProductId, Price = item.Price, Quantity = item.Quantity }; order.OrderItems.Add(oi); } return(order); }