Пример #1
0
        public void Update(ECommerceDomain.Shopping.Cart.Cart cart)
        {
            var cartItemDTOs    = _eCommerceContext.CartItems.Where(c => c.CustomerId == cart.Id);
            var storedCartItems = ToCartItemList(cartItemDTOs);

            var cartItemsToAdd    = cart.Items.Except(storedCartItems, new CartItemComparer());
            var cartItemsToDelete = storedCartItems.Except(cart.Items, new CartItemComparer()).ToList();


            foreach (var itemToDelete in cartItemsToDelete)
            {
                var itemDTO = _eCommerceContext.CartItems.First(item => item.Product.SKU == itemToDelete.SKU);
                _eCommerceContext.CartItems.Remove(itemDTO);
            }

            foreach (var cartItem in cartItemsToAdd)
            {
                var foundDTO = _eCommerceContext.CartItems.Any(item => item.CustomerId == cart.Id && item.Product.SKU == cartItem.SKU);

                if (!foundDTO)
                {
                    var cartItemDTO = new CartItemDTO
                    {
                        CustomerId = cart.Id,
                        ProductId  = cartItem.ProductId,
                        Quantity   = cartItem.Quantity.Value
                    };

                    _eCommerceContext.CartItems.Add(cartItemDTO);
                }
                else
                {
                    var foundItem = _eCommerceContext.CartItems.First(item => item.Product.SKU == cartItem.SKU);
                    foundItem.Quantity = cartItem.Quantity.Value;
                }
            }

            foreach (var cartItem in cart.Items)
            {
                //TODO: fix this
                var exists = _eCommerceContext.CartItems.Include(c => c.CustomerDTO).Include(p => p.Product).Any(c => c.CustomerId == cart.Id && c.ProductId == cartItem.ProductId);

                if (exists)
                {
                    var cartitemDTO = _eCommerceContext.CartItems.Include(c => c.CustomerDTO).Include(p => p.Product).First(c => c.CustomerId == cart.Id && c.ProductId == cartItem.ProductId);
                    cartitemDTO.Quantity = cartItem.Quantity.Value;
                }
            }
        }
Пример #2
0
        public ECommerceDomain.Shopping.Cart.Cart FindById(Guid id)
        {
            var cartItemDTOs = _eCommerceContext.CartItems.Where(c => c.CustomerId == id).Include(p => p.Product);

            var cart = new ECommerceDomain.Shopping.Cart.Cart(id);

            foreach (var item in cartItemDTOs)
            {
                var product = item.Product;
                cart.Add(new ECommerceDomain.Shopping.Product.Product(product.Id, product.SKU, product.Name, product.Manufacturer, product.Description, product.Price, product.CategoryId, product.ImageFileName),
                         Quantity.Is(item.Quantity));
            }

            return(cart);
        }