public IActionResult AddProductToCart(int productId, int quantity, int cartId)
        {
            var repo = new ProductsRepository(_connectionString);

            if (cartId != 0)
            {
                ShoppingCartProducts scp = new ShoppingCartProducts
                {
                    ProductId      = productId,
                    ShoppingCartId = cartId,
                    Quantity       = quantity
                };
                bool b = repo.AddProductToCart(scp);
                return(Json(b));
            }
            else
            {
                int cId = repo.AddCart();
                ShoppingCartProducts scp = new ShoppingCartProducts
                {
                    ProductId      = productId,
                    ShoppingCartId = cId,
                    Quantity       = quantity
                };
                bool b = repo.AddProductToCart(scp);
                HttpContext.Session.Set("cartId", cId);
                return(Json(b));
            }
        }
Пример #2
0
        public async Task ReturnCart_AccountId_IsValid()
        {
            //Arrange
            var options = new DbContextOptionsBuilder <GameStoreContext>()
                          .UseInMemoryDatabase("ReturnCart_AccountId_IsValid").Options;



            var validUser = new Account
            {
                UserName  = $"TestUsername",
                FirstName = "FirstName",
                LastName  = "LastName"
            };
            var cart = new ShoppingCart
            {
                ShoppingCartProducts = new List <ShoppingCartProducts>()
            };

            var cartProd = new ShoppingCartProducts()
            {
            };

            var product = new Product
            {
                Name                 = "Test",
                Description          = "test description",
                ShoppingCartProducts = new List <ShoppingCartProducts>(),
                Comments             = new List <Comment>()
            };


            using (var curContext = new GameStoreContext(options))
            {
                curContext.Accounts.Add(validUser);
                curContext.ShoppingCarts.Add(cart);
                validUser.ShoppingCart = cart;
                cartProd.Product       = product;
                cartProd.ShoppingCart  = cart;
                cart.ShoppingCartProducts.Add(cartProd);
                curContext.SaveChanges();

                //Act
                var sut    = new ShoppingCartsService(curContext);
                var result = await sut.GetUserCartAsync(validUser.Id);

                Assert.AreEqual(cart, result);
            }
        }
Пример #3
0
 public bool AddProductToCart(ShoppingCartProducts scp)
 {
     using (var context = new CommerceContext(_connectionString))
     {
         ShoppingCartProducts prod = context.ShoppingCartsProducts.
                                     FirstOrDefault(p => p.ShoppingCartId == scp.ShoppingCartId && p.ProductId == scp.ProductId);
         if (prod == null)
         {
             context.ShoppingCartsProducts.Add(scp);
             context.SaveChanges();
             return(true);
         }
         else
         {
             return(false);
         }
     }
 }
        /// <summary>
        ///     Adds multiple products to the account's cart.
        /// </summary>
        /// <param name="product">Product Type</param>
        /// <param name="account">Account Type</param>
        /// <returns></returns>
        public async Task <ShoppingCart> AddToCartAsync(IEnumerable <int> productsId, string accountId)
        {
            var account = await storeContext.Accounts.Where(acc => acc.Id == accountId).Include(acc => acc.ShoppingCart)
                          .SingleAsync();

            var products = await storeContext.Products.Where(prod => productsId.Contains(prod.Id)).ToListAsync();

            var tempCart = account.ShoppingCart;

            if (tempCart == null)
            {
                throw new UserException($"User ({account.UserName}) doesn't have Shopping Cart.");
            }

            foreach (var p in products)
            {
                if (p != null)
                {
                    if (await ProductExistsInCartAsync(p.Id, accountId))
                    {
                        throw new UserException($"Product {p.Name} already exists in the user's cart.");
                    }

                    var shoppingCart = new ShoppingCartProducts
                    {
                        ShoppingCartId = tempCart.Id,
                        ProductId      = p.Id
                    };

                    await storeContext.ShoppingCartProducts.AddAsync(shoppingCart);

                    account.ShoppingCart.ShoppingCartProducts.Add(shoppingCart);
                }
            }

            await storeContext.SaveChangesAsync();

            return(account.ShoppingCart);
        }
        /// <summary>
        ///     Adds the given product in the parameters to the account's cart.
        /// </summary>
        /// <param name="product">Product Type</param>
        /// <param name="account">Account Type</param>
        /// <returns></returns>
        public async Task <ShoppingCart> AddToCartAsync(int productId, string accountId)
        {
            var product = await storeContext.Products.FindAsync(productId);

            var account = await storeContext.Accounts.Where(acc => acc.Id == accountId).Include(acc => acc.ShoppingCart)
                          .SingleAsync();

            // Move this check to Commands

            if (product == null)
            {
                throw new UserException("No product given to add.");
            }

            if (await ProductExistsInCartAsync(productId, accountId))
            {
                throw new UserException($"Product {product.Name} already exists in the user's cart.");
            }

            var tempCart = account.ShoppingCart;

            if (tempCart == null)
            {
                throw new UserException($"User ({account.UserName}) doesn't have Shopping Cart.");
            }

            var shoppingCart = new ShoppingCartProducts
            {
                ShoppingCartId = tempCart.Id,
                ProductId      = product.Id
            };

            await storeContext.ShoppingCartProducts.AddAsync(shoppingCart);

            await storeContext.SaveChangesAsync();

            return(tempCart);
        }