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)); }
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; } }