示例#1
0
        //[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"));
        }
示例#2
0
        /// <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);
        }