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(); }
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 = "" })); }