예제 #1
0
        public IActionResult SummaryPost()
        {
            var claimsIdentity = (ClaimsIdentity)User.Identity;
            var claim          = claimsIdentity.FindFirst(ClaimTypes.NameIdentifier);
            var user           = _applicationUserRepository.GetApplicationUserById(claim.Value);
            var carts          = _cartRepository.GetCartsByUserId(claim.Value);
            var products       = _productRepository.GetAll();

            orderItemCartVM.CartList = carts.ToList();
            orderItemCartVM.Order.ApplicationUserId = claim.Value;
            orderItemCartVM.Order.Status            = OrderUtility.PaymentStatusPending;
            orderItemCartVM.Order.PaymentStatus     = OrderUtility.PaymentStatusPending;
            orderItemCartVM.Order.OrderDate         = DateTime.Now;
            orderItemCartVM.Order.PickupName        = user.Name;
            orderItemCartVM.Order.PhoneNumber       = user.PhoneNumber;
            _orderRepository.Create(orderItemCartVM.Order);

            var orderItemList = new List <OrderItem>();

            foreach (var cart in orderItemCartVM.CartList)
            {
                var product   = products.FirstOrDefault(p => p.Id.Equals(cart.ProductId));
                var orderItem = new OrderItem
                {
                    OrderId     = orderItemCartVM.Order.Id,
                    ProductId   = product.Id,
                    Count       = cart.Count,
                    Name        = product.Name,
                    Description = product.Description,
                    Price       = product.Price
                };
                orderItemCartVM.Order.OrderTotal += orderItem.Count * orderItem.Price;
                orderItemList.Add(orderItem);
            }

            _orderItemRepository.CreateRange(orderItemList);
            _cartRepository.DeleteRange(orderItemCartVM.CartList);
            //return View(orderItemCartVM);
            return(RedirectToAction("Confirm", "Order", new { id = orderItemCartVM.Order.Id }));
        }