public ShoppingCartDto GetShoppingCart(Guid customerId)
        {
            var user = _userRepository.GetByKey(customerId);

            var shoppingCart = _shoppingCartRepository.GetBySpecification(
                new ExpressionSpecification <ShoppingCart>(s => s.User.Id == user.Id));

            if (shoppingCart == null)
            {
                throw new DomainException("用户{0}不存在购物车.", customerId);
            }

            var shoppingCartItems =
                _shoppingCartItemRepository.GetAll(
                    new ExpressionSpecification <ShoppingCartItem>(s => s.ShoopingCart.Id == shoppingCart.Id), elp => elp.Product);

            var shoppingCartDto = Mapper.Map <ShoppingCart, ShoppingCartDto>(shoppingCart);

            shoppingCartDto.Items = new List <ShoppingCartItemDto>();
            if (shoppingCartItems != null && shoppingCartItems.Any())
            {
                shoppingCartItems
                .ToList()
                .ForEach(s => shoppingCartDto.Items.Add(Mapper.Map <ShoppingCartItem, ShoppingCartItemDto>(s)));
                shoppingCartDto.Subtotal = shoppingCartDto.Items.Sum(p => p.ItemAmount);
            }

            return(shoppingCartDto);
        }
        /// <summary>
        /// 创建订单,涉及到的操作有2个:1. 把购物车中的项中购物车移除; 2.创建一个订单。
        /// 这两个操作必须同时完成或失败。
        /// </summary>
        /// <param name="user"></param>
        /// <param name="shoppingCart"></param>
        /// <returns></returns>
        public Order CreateOrder(User user, ShoppingCart shoppingCart)
        {
            var order             = new Order();
            var shoppingCartItems =
                _shoppingCartItemRepository.GetAll(
                    new ExpressionSpecification <ShoppingCartItem>(s => s.ShoopingCart.Id == shoppingCart.Id));

            if (shoppingCartItems == null || !shoppingCartItems.Any())
            {
                throw new InvalidOperationException("购物篮中没有任何物品");
            }

            order.OrderItems = new List <OrderItem>();
            foreach (var shoppingCartItem in shoppingCartItems)
            {
                var orderItem = shoppingCartItem.ConvertToOrderItem();
                orderItem.Order = order;
                order.OrderItems.Add(orderItem);
                _shoppingCartItemRepository.Remove(shoppingCartItem);
            }
            order.User   = user;
            order.Status = OrderStatus.Paid;
            _orderRepository.Add(order);
            _repositoryContext.Commit();
            return(order);
        }
 public IList <ShoppingCartItem> GetCartItems(string cartId)
 {
     return(_shoppingCartItemRepository
            .GetAll()
            .Where(i => i.ShoppingCartId == cartId)
            .ToList() ?? throw new KeyNotFoundException(cartId));
 }
示例#4
0
 public List <ShoppingCartItem> Execute(string cartId)
 {
     return(_shoppingCartItemRepository
            .GetAll()
            .Where(i => i.ShoppingCartId == cartId).ToList());
 }
 public List <ShoppingCartItem> GetAll()
 {
     return(_shoppingCartItemRepository.GetAll().ToList());
 }
 public IEnumerable <ShoppingCartItem> GetAll()
 {
     return(_shoppingCartItemRepository.GetAll());
 }