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"));
        }
예제 #2
0
        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>());
        }
예제 #3
0
        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());
        }