public async Task <IActionResult> DeliveryToHome(DeliveryToHomeViewModel model) { var userId = User.GetId(); IOrderStates orderStates = new ToHomeDeliveryOrder(); var entry = _dbContext.ShoppingCartEntries.Where(u => u.UserId == userId).Include(e => e.Product).ToList(); var order = new Order() { UserId = userId, DeliveryMethod = DeliveryMethods.DeliveryToHome.GetString, CreateDate = DateTime.Now, State = orderStates.GetDefaultState(), OrderItems = new Collection <OrderItems>(entry.Select(s => new OrderItems() { ProductName = s.Product.Name, ProductPrice = s.Product.Price, ProductQuantity = s.Quantity, ProductId = s.ProductId, }).ToList()), TotalCount = entry.Sum(s => s.Quantity), TotalPrice = entry.Sum(s => s.Quantity * s.Product.Price), Address = model.Address, }; _dbContext.Orders.Add(order); _dbContext.ShoppingCartEntries.RemoveRange(entry); await _dbContext.SaveChangesAsync(); return(RedirectToAction("Orders", "Profile")); }
public IActionResult DeliveryToHome() { var userId = User.GetId(); var user = _dbContext.Users.ById(userId).FirstOrDefault(); var entries = _dbContext.ShoppingCartEntries.Where(s => s.UserId == userId).Select(s => new { count = s.Quantity, price = s.Product.Price }).ToList(); var model = new DeliveryToHomeViewModel() { FirstName = user?.Name, LastName = user?.Surname, Email = user?.Email, TotalCount = entries.Sum(e => e.count), TotalPrice = entries.Sum(e => e.count * e.price), }; return(View("CreateToHomeOrder", model)); }