public async Task <IActionResult> OnPostAddOrder(int id) { var d = LoginManagement.TempUser.ShoppingCart.ProductOrders; var order = d.FirstOrDefault(po => po.Products.Any(pr => pr.ProductId == id)); if (order.Quantity == 0) { order.Quantity = order.Products.Count; } order.Quantity++; LoginManagement.TempUser.ShoppingCart.ProductOrders = d; _lojaVirtualCtxt.Entry(LoginManagement.TempUser); await _lojaVirtualCtxt.SaveChangesAsync(); return(Page()); }
public async Task <IActionResult> OnPostAddItem(int product) { if (!LoginManagement.IsLogged) { return(RedirectToPage("/User/Login")); } if (LoginManagement.TempUser.ShoppingCart == null) { LoginManagement.TempUser.ShoppingCart = new ShoppingCart(); } if (LoginManagement.TempUser.ShoppingCart.ProductOrders == null) { LoginManagement.TempUser.ShoppingCart.ProductOrders = new List <ProductOrder>(); } Product prod; using (LojaVirtualContext ctxt = new LojaVirtualContext()) { prod = await ctxt.Products .Where(x => x.ProductId == product) .SingleOrDefaultAsync(); var orders = LoginManagement.TempUser.ShoppingCart.ProductOrders; ProductOrder order = orders .SingleOrDefault(o => o.Products .Any(p => p.ProductId == prod.ProductId)); if (order == null) { order = new ProductOrder(); order.Products = new List <Product>(); order.Products.Add(prod); orders.Add(order); } else { if (order.Quantity == 0 && Quantity <= 0) { order.Quantity = 1; } else { order.Quantity += Quantity; } } LoginManagement.TempUser.ShoppingCart.ProductOrders = orders; ctxt.Entry(LoginManagement.TempUser); await ctxt.SaveChangesAsync(); } //todo: redirecto to a temporary Message then to lastPage return(RedirectToPage(new { id = product })); }