public void SaveOrder(Order order)
 {
     using (var context = new EFDbContext())
     {
         var _order = new Order
         {
             AddressId = order.AddressId,
             UserId = order.UserId,
             OrderDate = DateTime.Now,
             OrderTotal = order.OrderTotal
         };
         context.Orders.Add(_order);
         foreach (var detail in order.OrderDetails)
         {
             var _orderDetail = new OrderDetail
             {
                 ProductId = detail.ProductId,
                 Quantity = detail.Quantity,
                 SizeId = detail.SizeId,
                 ColorId = detail.ColorId,
                 ManufacturerId = detail.ManufacturerId,
                 SubTotal = detail.SubTotal,
                 Order = _order
             };
             context.OrderDetails.Add(_orderDetail);
         }
        context.SaveChanges();
     }
 }
        public ViewResult Checkout(Cart cart, ShippingDetails shippingDetails)
        {
            if (!cart.Lines.Any())
            {
                ModelState.AddModelError("", "Sorry, your cart is empty!");
            }

            if (ModelState.IsValid)
            {
                var addrs = new Address
                {
                    Name = shippingDetails.Name,
                    Line1 = shippingDetails.Line1,
                    Line2 = shippingDetails.Line2,
                    Line3 = shippingDetails.Line3,
                    City = shippingDetails.City,
                    State = shippingDetails.State,
                    Zip = shippingDetails.Zip,
                    Country = shippingDetails.Country,
                    UserId = shippingDetails.UserId
                };

                _repository.SaveAddress(addrs);

                if (addrs.AddressID > 0)
                {

                    var order = new Order
                    {
                        AddressId = addrs.AddressID,
                        UserId = shippingDetails.UserId,
                        OrderDate = DateTime.Now
                    };

                    var orderDetails = new List<OrderDetail>();

                    foreach (var line in cart.Lines)
                    {
                        var orderDetail = new OrderDetail
                        {
                            ProductId = line.Product.ProductID,
                            Quantity = line.Quantity,
                            SizeId = line.SizeId,
                            ColorId = line.ColorId,
                            ManufacturerId = line.ManufactererId,
                            SubTotal = (line.Product.Price * line.Quantity)
                        };

                        order.OrderTotal += orderDetail.SubTotal;

                        orderDetails.Add(orderDetail);
                    }

                    order.OrderDetails = orderDetails;

                    _repository.SaveOrder(order);
                }

                return View("Completed", new ShippingViewModel
                {
                    crt = cart,
                    shipDtls = shippingDetails
                });
            }

            return View(shippingDetails);
        }