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);
 }
Exemple #3
0
        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);
        }