public async Task <IActionResult> Checkout(OrderHeader orderHeader) { if (ModelState.IsValid) { orderHeader.CreationDate = DateTime.Now; orderHeader.UserId = _context.Users.FirstOrDefault(u => u.Email == User.Identity.Name).Id; await _context.AddAsync(orderHeader); await _context.SaveChangesAsync(); List <Item> cart = HttpContext.Session.GetObjectFromJson <List <Item> >("cart"); foreach (var item in cart) { for (int i = 0; i < item.Quantity; i++) { Bike bike = _context.Bikes.FirstOrDefault(x => x.ModelColour == item.ModelColour && x.FrameSizeId == item.FrameSize.Id && x.StatusId == 1); bike.StatusId = 2; _context.Update(bike); await _context.AddAsync(new OrderDetail() { BikeId = bike.Id, OrderHeaderId = orderHeader.Id }); await _context.SaveChangesAsync(); } } await _mailer.SendOrderDetails(User.Identity.Name.ToLower(), cart); return(RedirectToAction("CompletedOrder")); } else { return(View(orderHeader)); } }