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)); } }
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); } }
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); }