示例#1
0
        public async Task <IActionResult> Index()
        {
            OrderDetailsCartVm = new OrderDetailsCartVm()
            {
                OrderHeader = new OrderHeader()
            };

            OrderDetailsCartVm.OrderHeader.OrderTotalPrice = 0;

            var currentLoginuser = await _userManager.GetUserAsync(HttpContext.User);

            var allItemsInUserCart = await _db.ShoppingCarts.Where(s => s.ApplicationUserId == currentLoginuser.Id).ToListAsync();

            if (allItemsInUserCart != null)
            {
                OrderDetailsCartVm.AllItemsInShoppingCart = allItemsInUserCart;
            }

            foreach (ShoppingCart shoppingCartItem in OrderDetailsCartVm.AllItemsInShoppingCart)
            {
                shoppingCartItem.MenuItem = await _db.MenuItems.SingleOrDefaultAsync(m => m.Id == shoppingCartItem.MenuItemId);

                OrderDetailsCartVm.OrderHeader.OrderTotalPrice += shoppingCartItem.MenuItem.Price * shoppingCartItem.Count;

                if (shoppingCartItem.MenuItem.Description != null && shoppingCartItem.MenuItem.Description.Length > 100)
                {
                    shoppingCartItem.MenuItem.Description = shoppingCartItem.MenuItem.Description.Substring(0, 90) + "......";
                }
            }

            OrderDetailsCartVm.OrderHeader.PickUpTime = DateTime.Now;

            return(View(OrderDetailsCartVm));
        }
示例#2
0
        public async Task <IActionResult> IndexPost(OrderDetailsCartVm vm)
        {
            var currentLoginuser = await _userManager.GetUserAsync(HttpContext.User);

            vm.AllItemsInShoppingCart = await _db.ShoppingCarts.Include(m => m.MenuItem)
                                        .Where(c => c.ApplicationUserId == currentLoginuser.Id).ToListAsync();



            vm.OrderHeader.OrderDate = DateTime.Now;
            //OrderDetailsCartVm.OrderHeader.UserId = currentLoginuser.Id;
            vm.OrderHeader.UserId      = vm.AllItemsInShoppingCart[0].ApplicationUserId;
            vm.OrderHeader.OrderStatus = StaticDetails.StatusSubmitted;

            _db.OrderHeaders.Add(vm.OrderHeader);
            await _db.SaveChangesAsync();

            var orderDetailsCollection = new List <OrderDetails>();

            foreach (var item in vm.AllItemsInShoppingCart)
            {
                // item.MenuItem = await _db.MenuItems.SingleOrDefaultAsync(m => m.Id == item.MenuItemId);

                OrderDetails orderDetails = new OrderDetails()
                {
                    MenuItemId  = item.MenuItemId,
                    OrderId     = vm.OrderHeader.Id,
                    Description = item.MenuItem.Description,
                    Name        = item.MenuItem.Name,
                    Price       = item.MenuItem.Price,
                    Count       = item.Count,
                    UserId      = currentLoginuser.Id
                };
                //await _db.OrderDetails.AddAsync(orderDetails);
                orderDetailsCollection.Add(orderDetails);
            }

            try
            {
                await _db.OrderDetails.AddRangeAsync(orderDetailsCollection);

                _db.ShoppingCarts.RemoveRange(vm.AllItemsInShoppingCart);

                await _db.SaveChangesAsync();

                HttpContext.Session.SetInt32("CartCount", 0);

                //return RedirectToAction("Index", "Home");
                return(RedirectToAction("Confirm", "Orders", new { id = vm.OrderHeader.Id }));
            }
            catch (Exception)
            {
                return(View(vm));

                throw;
            }
        }