public async Task AddProductToUserCartTests()
        {
            //Arrange
            var mapperConfig = new MapperConfiguration(x => x.AddProfile(new MappingProfile()));
            var mapper       = mapperConfig.CreateMapper();

            var cartService = new CartService(this.context, mapper);

            var product = new Mock <Product>().Object;

            product.Id = "Test-id";

            var productBindingModel = new BuyProductBindingModel
            {
                Id    = product.Id,
                Quant = 3,
            };

            var user = new Mock <User>().Object;

            //Act
            Assert.Equal(0, context.CartProducts.Count());

            await cartService.AddProductToUserCart(productBindingModel, user);

            //Assert
            Assert.Equal(1, context.CartProducts.Count());
        }
Ejemplo n.º 2
0
        public async Task <IActionResult> SingleProduct(BuyProductBindingModel model)
        {
            if (!this.ModelState.IsValid)
            {
                return(await this.SingleProduct(model.Id, model.Quant));
            }

            var currentUser = await this.userManager.GetUserAsync(this.User);

            await this.cartService.AddProductToUserCart(model, currentUser);

            return(this.Redirect("/Cart/Index"));
        }
Ejemplo n.º 3
0
        public async Task AddProductToUserCart(BuyProductBindingModel model, User user)
        {
            var currentOrder = await this.context.CartProducts
                               .FirstOrDefaultAsync(cp => cp.CartId == user.CartId && cp.ProductId == model.Id);

            if (currentOrder == null)
            {
                await this.context.CartProducts.AddAsync(new CartProduct
                {
                    CartId    = user.CartId,
                    ProductId = model.Id,
                    Quantity  = model.Quant,
                });
            }
            else
            {
                currentOrder.Quantity = model.Quant;
            }

            await this.context.SaveChangesAsync();
        }