public async Task <IActionResult> OnPostAsync() { if (!ModelState.IsValid) { Basket = BasketHelper.GetBasket(HttpContext.Session); Fail = true; return(Page()); } Basket = BasketHelper.GetBasket(HttpContext.Session); var userId = _um.GetUserId(User); Order newOrder = _ds.CreateOrderFromBasket(Basket, userId, Shipping.Value, Payment.Value); var orderId = _ds.SaveOrder(newOrder); foreach (var item in Basket.Items) { await _ds.DecreaseProductStockAsync(item.ProductId, item.Quantity); } BasketHelper.ClearBasket(HttpContext.Session); return(RedirectToPage("./CheckoutConfirm", new { orderid = orderId })); }