コード例 #1
0
        public async Task CreateOrderAsync(CreatedOrderDTO dto)
        {
            var         cartItems = dto.OrderItems;
            var         buyerId   = dto.UserId;
            List <Item> items     = new List <Item> ();
            Item        item;
            int         i, length = cartItems.Count;
            decimal     totalSum = 0;

            for (i = 0; i < length; i += 1)
            {
                item = await _unitOfWork.ItemRepo.GetById(cartItems[i].ItemId);

                if (item.UserId == buyerId)
                {
                    throw new Exception("You try buy your own item.");
                }
                item.Status = Status.Bought;
                items.Add(item);
            }

            totalSum = cartItems.Sum(s => s.Price + s.DeliveryCost);

            Order order = new Order {
                BuyerId   = buyerId,
                Date      = DateTime.Now,
                TotalCost = totalSum
            };

            await _unitOfWork.OrderRepo.Add(order);

            _unitOfWork.Save();
        }
コード例 #2
0
        public async Task <IActionResult> SubmitOrder()
        {
            string             userId = User.FindFirst(ClaimTypes.NameIdentifier).Value;
            List <CartItemDTO> cart   = _cartService.GetCartItems();
            CreatedOrderDTO    dto    = new CreatedOrderDTO {
                UserId     = userId,
                OrderItems = _mapper.Map <List <CartItemDTO>, List <CreatedOrderItemDTO> > (cart)
            };
            await _orderService.CreateOrderAsync(dto);

            await _cartService.RemoveCart();

            return(RedirectToAction("Index", "Home", new { area = "" }));
        }