public ActionResult CreateOrder() { CheckoutViewModel model = this.Session[CHECKOUT_SESSION_KEY] as CheckoutViewModel; if (model == null) { return RedirectToAction("ShowCart", "Product"); } else { if (model.CurrentStep != CheckoutStep.PaymentInfo) { return Index(); } else { using (MyStoreEntities db = new MyStoreEntities()) { Order newOrder = new Order(); newOrder.Order_Status_Codes = db.Order_Status_Codes.Where(p => p.order_status_description == "New").SingleOrDefault(); newOrder.date_order_placed = DateTime.Now; if (model.IsPassword ?? true) newOrder.user_id = WebSecurity.CurrentUserId; else newOrder.email_address = model.UserName; newOrder.receipter_name = model.CustomerName; newOrder.order_address = model.OrderAddress; newOrder.phone_number = model.PhoneNumber; newOrder.order_description = model.OrderDescription; var cartDetailsList = CartHelper.GetCartDetail(this.HttpContext); if (cartDetailsList != null) { foreach (var item in cartDetailsList) { Order_Items newItem = new Order_Items(); var inventory = db.Products.Where(p => p.product_id == item.ProductId) .Select(p => p.product_quantity) .SingleOrDefault(); if (inventory < item.TotalQuantity) newItem.Ref_Order_Item_Status_Codes = db.Ref_Order_Item_Status_Codes.Where(p => p.order_item_status_description == "Out Of Stock") .SingleOrDefault(); else newItem.Ref_Order_Item_Status_Codes = db.Ref_Order_Item_Status_Codes.Where(p => p.order_item_status_description == "Normal") .SingleOrDefault(); newItem.product_id = item.ProductId; newItem.order_item_quantity = item.TotalQuantity; newItem.order_item_amount = item.TotalAmount; newOrder.Order_Items.Add(newItem); } } db.Orders.Add(newOrder); db.SaveChanges(); } this.Session[CHECKOUT_SESSION_KEY] = null; Utilities.CartHelper.EmptyCart(this.HttpContext); return RedirectToAction("Index", "Product"); } } }