public async Task <IActionResult> Checkout() { IList <CartVm> cart = null; var claimIdentity = User.Identity as ClaimsIdentity; string userid = claimIdentity.FindFirst(ClaimTypes.NameIdentifier).Value; if (userid != null) { cart = await _cartClient.GetCarts(userid); } var ordercreaterequest = new OrderCreaterequest { UserID = userid, }; ordercreaterequest.OrderItems = new List <OrderItem>(); for (int i = 0; i < cart.Count; i++) { var orderitem = new OrderItem { ProductID = cart[i].ProductID, Quantity = cart[i].Quantity, ProductPrice = cart[i].ProductPrice, ProductPromotionPrice = cart[i].ProductPromotionPrice }; ordercreaterequest.OrderItems.Add(orderitem); } await _orderClient.PostOrder(ordercreaterequest); return(RedirectToAction("Index", "Home")); }
public async Task <OrderCreaterequest> PostOrder(OrderCreaterequest orderCreaterequest) { HttpContent httpContent = new StringContent(JsonConvert.SerializeObject(orderCreaterequest), Encoding.UTF8, "application/json"); var response = await _httpClient.PostAsync("api/Orders", httpContent); response.EnsureSuccessStatusCode(); return(await response.Content.ReadAsAsync <OrderCreaterequest>()); }
public async Task <ActionResult <Order> > PostOrder(OrderCreaterequest orderCreaterequest) { var order = new Order { CustomerID = orderCreaterequest.UserID, CreateDate = DateTime.Now, ShipAddress = orderCreaterequest.ShipAddress, ShipEmail = orderCreaterequest.ShipEmail, ShipMobile = orderCreaterequest.ShipMobile, ShipName = orderCreaterequest.ShipName }; var transaction = _context.Database.BeginTransaction(); try { _context.Orders.Add(order); await _context.SaveChangesAsync(); var orderid = order.ID; for (int i = 0; i < orderCreaterequest.OrderItems.Count; i++) { var orderdetail = new OrderDetail { OrderID = orderid, ProductID = orderCreaterequest.OrderItems[i].ProductID, Quantity = orderCreaterequest.OrderItems[i].Quantity, Price = orderCreaterequest.OrderItems[i].ProductPrice, PromotionPrice = orderCreaterequest.OrderItems[i].ProductPromotionPrice }; var product = _context.Products.Find(orderdetail.ProductID); product.Quantity = product.Quantity - orderdetail.Quantity.Value; await _context.SaveChangesAsync(); _context.OrderDetails.Add(orderdetail); await _context.SaveChangesAsync(); } await _context.SaveChangesAsync(); transaction.Commit(); } catch { } return(Accepted()); }