public async Task <IActionResult> DeliveryToShop(DeliveryToShopViewModel model) { var userId = User.GetId(); IOrderStates orderStates = new ToShopDeliveryOrder(); var entry = _dbContext.ShoppingCartEntries.Where(u => u.UserId == userId).Include(e => e.Product).ToList(); var order = new Order() { UserId = userId, DeliveryMethod = DeliveryMethods.DeliveryToShop.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.ShopAddress, }; _dbContext.Orders.Add(order); _dbContext.ShoppingCartEntries.RemoveRange(entry); await _dbContext.SaveChangesAsync(); return(RedirectToAction("Orders", "Profile")); }
public IActionResult DeliveryToShop() { var userId = User.GetId(); var user = _dbContext.Users.ById(userId).FirstOrDefault(); var cities = _dbContext.Cities.OrderBy(c => c.Name).Select(c => c.Name).ToList(); var entries = _dbContext.ShoppingCartEntries.Where(s => s.UserId == userId).Select(s => new { count = s.Quantity, price = s.Product.Price }).ToList(); var shops = _dbContext.Shops.Where(s => s.CityName == cities[0]).Select(u => u.Address).OrderBy(s => s).ToList(); var model = new DeliveryToShopViewModel() { FirstName = user?.Name, LastName = user?.Surname, Email = user?.Email, City = "Город", Cities = (cities.Count > 0 ? new SelectList(cities, cities[0]):null), ShopAddress = "Адрес", ShopAddresses = shops.Count > 0 ? new SelectList(shops, shops[0]):null, TotalCount = entries.Sum(e => e.count), TotalPrice = entries.Sum(e => e.count * e.price), }; return(View("CreateToShopOrder", model)); }