//[HttpPost] //[ValidateAntiForgeryToken] public ActionResult PlaceOrder() { //Order order = new Order(); //order.Customer = db.Customers.Where(c => c.Email == HttpContext.User.Identity.Name).FirstOrDefault(); //order.Dishes = db.Cart.; if (ModelState.IsValid) { Order order = new Order(); order.Cart = new List <CartItemBase>(); double total = 0; if (db.Cart.Count() == 0) { return(RedirectToAction("Cart", "Orders")); } foreach (var cartItem in db.Cart) { //order.CustomerID = db.Customers.Where(c => c.Email == HttpContext.User.Identity.Name).Select(c => c.ID).FirstOrDefault(); //order.DishID = cartItem.DishID; //order.CartID = cartItem.ID; CartItemBase cartItemBase = new CartItemBase(); cartItemBase.CustomerID = cartItem.CustomerID; cartItemBase.RestaurantID = cartItem.RestaurantID; cartItemBase.DishID = cartItem.DishID; cartItemBase.DishAmount = cartItem.DishAmount; cartItemBase.TotalPrice = cartItem.TotalPrice; order.Cart.Add(cartItemBase); total += cartItem.TotalPrice; //order.number = cartItem.DishAmount; } //db.SaveChanges(); order.CustomerID = order.Cart.Select(c => c.CustomerID).First(); order.OrderDate = DateTime.Now; order.TotalPrice = total; //_OrderService.AddToRecord(order); db.Orders.Add(order); db.Cart.RemoveRange(db.Cart); db.SaveChanges(); } return(RedirectToAction("Cart")); }
/// <summary> /// Handler to Add an Item to the Cart /// </summary> /// <returns>Returns the item that was added.</returns> public async Task <HttpResponseMessage> Post() { const string MethodName = "CartService_Post"; var correlationId = Guid.NewGuid(); var stopWatch = Stopwatch.StartNew(); CartServiceEventLogger.Instance.LogMethodStartEvent(correlationId, MethodName, stopWatch.ElapsedTicks); var cartContext = this.CreateCartContext(); CartItemBase cartRequestBody = null; var returnMessage = new HttpResponseMessage(); var bodyContent = await this.Request.Content.ReadAsStringAsync(); switch (cartContext.Version) { case 1: cartRequestBody = JsonConvert.DeserializeObject <CartItemV1>(bodyContent); break; case 2: cartRequestBody = JsonConvert.DeserializeObject <CartItemV2>(bodyContent); break; default: throw CartException.InvalidVersionHeader(); } if (cartRequestBody == null) { CartServiceEventLogger.Instance.LogInvalidCartItemEvent(correlationId, "CartService_Post"); throw CartException.InvalidCartItem(); } var userItems = default(Dictionary <Guid, CartItemModel>); if (!cartItems.TryGetValue(cartContext.UserToken, out userItems)) { userItems = new Dictionary <Guid, CartItemModel>(); cartItems.Add(cartContext.UserToken, userItems); } if (userItems.ContainsKey(cartRequestBody.Id)) { userItems[cartRequestBody.Id].Quantity++; } else { var item = default(CartItemBase); switch (cartContext.Version) { case 1: item = cartRequestBody as CartItemV1; returnMessage = new HttpResponseMessage { Content = new JsonContent <CartItemV1>(item as CartItemV1) }; break; case 2: item = cartRequestBody as CartItemV2; returnMessage = new HttpResponseMessage { Content = new JsonContent <CartItemV2>(item as CartItemV2) }; break; } userItems.Add(item.Id, item.ToModel()); } CartServiceEventLogger.Instance.LogMethodEndEvent(correlationId, MethodName, stopWatch.ElapsedTicks); return(returnMessage); }