Esempio n. 1
0
        public async Task <IActionResult> UpdateCartItem(int id, [FromBody] CartItemDto cartItem)
        {
            try
            {
                if (!ModelState.IsValid)
                {
                    return(BadRequest(ModelState));
                }

                var cartItemFromDb = await _cartItemService.GetCartItemAsync(id);

                if (cartItemFromDb == null)
                {
                    await _cartItemService.AddCartItemAsync(cartItem);

                    return(CreatedAtRoute("GetCartItemById", cartItem.Id, cartItem));
                }

                await _cartItemService.UpdateCartItemAsync(cartItem);

                return(Ok());
            }
            catch (Exception ex)
            {
                return(StatusCode(500, ex.Message));
            }
        }
Esempio n. 2
0
 private CartProductDto MapCartProduct(CartItem ci,
                                       CartItemDto ciDto,
                                       CartProductDto cpDto,
                                       ResolutionContext rContext)
 {
     return(fixture.Generate <CartProductDto>(constraints: new { Id = ci.ProductId }));
 }
        public void Publish(CartItemDto dto)
        {
            var factory = new ConnectionFactory
            {
                Uri = new Uri("amqp://*****:*****@localhost:5672")
            };

            using var connection = factory.CreateConnection();
            using var channel    = connection.CreateModel();

            channel.QueueDeclare(QueueName,
                                 durable: true,
                                 exclusive: false,
                                 autoDelete: false,
                                 arguments: null);

            var cartItemAddedEvent = JsonConvert.SerializeObject(
                new CartItemAddedEvent
            {
                ProductId = dto.ProductId,
                Qty       = dto.Qty
            });

            var body = Encoding.UTF8.GetBytes(cartItemAddedEvent);

            channel.BasicPublish("", QueueName, null, body);
        }
Esempio n. 4
0
        public List <CartItemDto> GetProductsAvailableInCart(string cartID)
        {
            try
            {
                List <CartItemDto> cartItemList = new List <CartItemDto>();
                List <CartItems>   cartItems    = _dbContext.CartItems.Where(x => x.CartId == cartID).ToList();

                foreach (CartItems item in cartItems)
                {
                    Product     product     = GetProductData(item.ProductId);
                    CartItemDto objCartItem = new CartItemDto
                    {
                        Product  = product,
                        Quantity = item.Quantity
                    };

                    cartItemList.Add(objCartItem);
                }
                return(cartItemList);
            }
            catch
            {
                throw;
            }
        }
Esempio n. 5
0
        public async Task AddAsync_CartItemDto_AddOne()
        {
            string dbName = "AddAsync_CartItemDto_AddOne";
            // Arrange
            Product product1 = new Product
            {
                Id          = 1,
                ProductName = "Racing Car",
                CategoryId  = 1,
                Description = "Nice Racing Car",
                ImagePath   = "abc.png",
                UnitPrice   = 23.1
            };
            var cartId = Guid.NewGuid().ToString();

            var context = new WingtipContext(new DbContextOptionsBuilder <WingtipContext>().UseInMemoryDatabase("WingtipToysDB").Options);

            context.Products.Add(product1);
            context.SaveChanges();

            ICartService service = new CartService(context, _mapper);

            CartItemDto cartDto = new CartItemDto
            {
                CartId    = cartId,
                ProductId = product1.Id,
                Quantity  = 3
            };

            // Act
            string result = await service.AddAsync(cartDto);

            // Assert
            Assert.AreEqual(cartId, result);
        }
        public CartItemDto Add(CartItemDto item)
        {
            var nItem = this._dbContext.CartItems.Add(item).Entity;

            this._dbContext.SaveContextChanges();
            return(nItem);
        }
Esempio n. 7
0
        public async Task <IEnumerable <CartItemDto> > GetItemsInCart(string cartId)
        {
            try
            {
                var cartItemsDto = new List <CartItemDto>();
                var cartItems    = await db.CartItems.Where(x => x.CartId == cartId).ToListAsync();

                if (cartItems == null)
                {
                    return(cartItemsDto);
                }
                foreach (var item in cartItems)
                {
                    var book = await db.Books.SingleOrDefaultAsync(x => x.Id == item.BookId);

                    var cartIt = new CartItemDto
                    {
                        Quantity = item.Quantity
                    };
                    cartIt.Book = mapper.Map <BookDto>(book);
                    cartItemsDto.Add(cartIt);
                }
                return(cartItemsDto);
            }
            catch (Exception)
            {
                throw;
            }
        }
        public CartItemDto Update(CartItemDto entity)
        {
            var uItem = this._dbContext.CartItems.Update(entity).Entity;

            this._dbContext.SaveContextChanges();
            return(uItem);
        }
Esempio n. 9
0
        public IActionResult Post([FromBody] CartItemDto cartItemDto)
        {
            var cartItem           = _mapper.Map <CartItem>(cartItemDto);
            var createdCartItem    = _cartItemService.Create(cartItem);
            var createdCartItemDto = _mapper.Map <CartItemDto>(createdCartItem);

            return(StatusCode((int)HttpStatusCode.Created, createdCartItemDto));
        }
Esempio n. 10
0
        public async Task UpdateCartItemAsync(CartItemDto cartItem)
        {
            var cartItemEntity = _mapper.Map <CartItemDto, CartItem>(cartItem);

            await _uow.CartItems.UpdateAsync(cartItemEntity);

            await _uow.SaveAsync();
        }
Esempio n. 11
0
 private static bool EqualTo(this ShoppingCartItem expected, CartItemDto actual)
 {
     return(expected.ProductId == actual.ProductId &&
            expected.Name == actual.ProductName &&
            expected.Price == actual.Price &&
            expected.Quantity == actual.Quantity &&
            expected.ItemTotal == actual.ItemTotal);
 }
Esempio n. 12
0
        public void Add_CartItemDto_AddOne()
        {
            // Arrange
            Product product1 = new Product
            {
                Id          = 1,
                ProductName = "Racing Car",
                CategoryId  = 1,
                Description = "Nice Racing Car",
                ImagePath   = "abc.png",
                UnitPrice   = 23.1
            };
            var cartId = Guid.NewGuid().ToString();

            var dataProduct = new List <Product>
            {
                product1
            }.AsQueryable();

            var mockSetProducts = new Mock <DbSet <Product> >();

            mockSetProducts.As <IQueryable <Product> >().Setup(m => m.Provider).Returns(dataProduct.Provider);
            mockSetProducts.As <IQueryable <Product> >().Setup(m => m.Expression).Returns(dataProduct.Expression);
            mockSetProducts.As <IQueryable <Product> >().Setup(m => m.ElementType).Returns(dataProduct.ElementType);
            mockSetProducts.As <IQueryable <Product> >().Setup(m => m.GetEnumerator()).Returns(dataProduct.GetEnumerator());

            var data = new List <CartItem>
            {
            }.AsQueryable();
            var mockSet = new Mock <DbSet <CartItem> >();

            mockSet.As <IQueryable <CartItem> >().Setup(m => m.Provider).Returns(data.Provider);
            mockSet.As <IQueryable <CartItem> >().Setup(m => m.Expression).Returns(data.Expression);
            mockSet.As <IQueryable <CartItem> >().Setup(m => m.ElementType).Returns(data.ElementType);
            mockSet.As <IQueryable <CartItem> >().Setup(m => m.GetEnumerator()).Returns(data.GetEnumerator());

            var mockContext = new Mock <WingtipContext>(new DbContextOptionsBuilder <WingtipContext>().Options);

            mockContext.Setup(m => m.Products).Returns(mockSetProducts.Object);
            mockContext.Setup(m => m.CartItems).Returns(mockSet.Object);

            ICartService service = new CartService(mockContext.Object, _mapper);

            CartItemDto cartDto = new CartItemDto
            {
                CartId    = cartId,
                ProductId = product1.Id,
                Quantity  = 3
            };

            // Act
            string result = service.Add(cartDto);

            // Assert
            Assert.AreEqual(cartId, result);
            mockSet.Verify(m => m.Add(It.IsAny <CartItem>()), Times.Once());
            mockContext.Verify(m => m.SaveChanges(), Times.Once());
        }
Esempio n. 13
0
        public async Task <ActionResult <string> > AddToCart(CartItemDto cart)
        {
            var user = _helper.GetCurrentUserEmail();

            cart.UserId = user;
            var data = await _cartService.CreateCartItem(cart);

            return(Ok(data));
        }
Esempio n. 14
0
 public CartItem MapToCartItem(CartItemDto cartItemDto)
 {
     return(new CartItem
     {
         CartId = cartItemDto.CartId,
         ProductId = cartItemDto.Product.Id,
         Quantity = cartItemDto.Quantity
     });
 }
Esempio n. 15
0
        public async Task AddAsync_AddOne_UpdateIfExists()
        {
            // Arrange
            Product product1 = new Product
            {
                Id          = 1,
                ProductName = "Racing Car",
                CategoryId  = 1,
                Description = "Nice Racing Car",
                ImagePath   = "abc.png",
                UnitPrice   = 23.1
            };
            var      cartId   = Guid.NewGuid().ToString();
            CartItem cartItem = new CartItem
            {
                Id        = Guid.NewGuid().ToString(),
                CartId    = cartId,
                ProductId = product1.Id,
                Product   = product1,
                Created   = DateTime.Now,
                Quantity  = 1
            };

            var context = new WingtipContext(new DbContextOptionsBuilder <WingtipContext>().UseInMemoryDatabase("WingtipToysDB").Options);

            context.Products.Add(product1);
            context.CartItems.Add(cartItem);
            context.SaveChanges();

            ICartService service = new CartService(context, _mapper);

            CartItemDto cartDto = new CartItemDto
            {
                CartId    = cartId,
                ProductId = product1.Id,
                Quantity  = 3
            };

            // Act
            await service.AddAsync(cartDto);

            // Assert
            var tempList = context.CartItems.ToList();

            Assert.AreEqual(1, tempList.Count);
            Assert.AreEqual(cartItem.Id, tempList[0].Id);
            Assert.AreEqual(cartItem.CartId, tempList[0].CartId);
            Assert.AreEqual(cartItem.ProductId, tempList[0].ProductId);
            Assert.AreEqual(3, tempList[0].Quantity);

            // Clean data
            context.Products.RemoveRange(context.Products);
            context.CartItems.RemoveRange(context.CartItems);
            context.SaveChanges();
            context.Dispose();
        }
Esempio n. 16
0
        public void RemoveFromCart(CartDto cart, object productId)
        {
            CartItemDto cartItem = cart.CartItems.SingleOrDefault(o => object.Equals(o.ProductId, productId));

            if (cartItem != null)
            {
                cart.CartItems.Remove(cartItem);
                CalculateCart(cart);
            }
        }
Esempio n. 17
0
        public async Task <IActionResult> Post([FromBody] CartItemDto CartItem)
        {
            if (!ModelState.IsValid)
            {
                return(new ApiActionResult(new ApiResponse(HttpStatusCode.BadRequest, "Invalid model")));
            }
            var apiResponse = await _addCartItem.ExecutePipeline(CartItem);

            return(new ApiActionResult(apiResponse));
        }
Esempio n. 18
0
        public IActionResult Patch(int id, [FromBody] CartItemDto cartItemDto)
        {
            var cartItem = _mapper.Map <CartItem>(cartItemDto);

            cartItem.Id = id;
            var updatedCartItem    = _cartItemService.Update(cartItem);
            var updatedCartItemDto = _mapper.Map <CartItemDto>(updatedCartItem);

            return(StatusCode((int)HttpStatusCode.Accepted, updatedCartItemDto));
        }
Esempio n. 19
0
        public async Task AddCartItemAsync(CartItemDto cartItem)
        {
            var cartItemEntity = _mapper.Map <CartItemDto, CartItem>(cartItem);

            await _uow.CartItems.AddAsync(cartItemEntity);

            await _uow.SaveAsync();

            cartItem.Id = cartItemEntity.Id;
        }
Esempio n. 20
0
        public ActionResult AddProductVariant([FromBody] CartItemDto cartItem)
        {
            var result = this.cartRepository.AddProductVariantToCart(cartItem.ProductId, cartItem.VariantId, cartItem.Quantity);

            if (result.Success)
            {
                return(this.JsonOk(result.Data));
            }

            return(this.JsonError(result.Errors?.ToArray(), HttpStatusCode.InternalServerError, tempData: result.Data));
        }
Esempio n. 21
0
        public static CartItem MapToCartItem(this CartItemDto cartItemDto)
        {
            var cartItem = new CartItem
            {
                CartId    = cartItemDto.CartId,
                ProductId = cartItemDto.Product.Id,
                Quantity  = cartItemDto.Quantity
            };

            return(cartItem);
        }
Esempio n. 22
0
        public ActionResult Patch([FromBody] CartItemDto dto)
        {
            string cartId   = dto.CartId;
            string itemId   = dto.Id;
            int    quantity = dto.Quantity;

            if (cartId == null || itemId == null || quantity <= 0)
            {
                return(BadRequest("Not enough information to update."));
            }
            _cartService.Patch(cartId, itemId, quantity);
            return(NoContent());
        }
Esempio n. 23
0
        public static CartItemDto MapToCartItemDto(this CartItem cartItem)
        {
            var productDto  = cartItem.Product.MapToProductDto();
            var cartItemDto = new CartItemDto
            {
                Id       = cartItem.Id,
                CartId   = cartItem.CartId,
                Product  = productDto,
                Quantity = cartItem.Quantity
            };

            return(cartItemDto);
        }
Esempio n. 24
0
 public void AddtoCart(CartItemDto item)
 {
     if (_cart.CartItems.Exists(i => i.ProductId == item.ProductId))
     {
         var cartItem = _cart.CartItems.Find(i => i.ProductId == item.ProductId);
         cartItem.Quantity += item.Quantity;
         var index = _cart.CartItems.FindIndex(i => i.ProductId == item.ProductId);
         _cart.CartItems.RemoveAt(index);
         _cart.CartItems.Add(cartItem);
     }
     else
     {
         _cart.CartItems.Add(item);
     }
 }
Esempio n. 25
0
        public async Task <string> CreateCartItem(CartItemDto cart)
        {
            var c = new CartItem
            {
                EquipmentId = cart.EquipmentId,
                UserId      = cart.UserId,
                DateCreated = DateTime.Now,
                NoOfDays    = cart.NoOfDays
            };

            _cartRepository.Add(c);
            await _uow.CompleteAsync();

            return(c.CartItemId.ToString());
        }
        private CartDto MapCartQueryToDto(CartQuery cart)
        {
            var cartDto = new CartDto();

            cartDto.CartItems = new List <CartItemDto>();
            foreach (var item in cart.CartItems)
            {
                var transformedItem = new CartItemDto(item.CartItemCode)
                {
                    Quantity = item.Quantity
                };
                cartDto.CartItems.Add(transformedItem);
                cartDto.CartValue += transformedItem.UnitPrice * transformedItem.Quantity;
            }
            return(cartDto);
        }
Esempio n. 27
0
        public async Task <string> AddAsync(CartItemDto dto)
        {
            if (dto.Quantity <= 0)
            {
                dto.Quantity = 1;
            }
            var q       = _context.Products.Where(p => p.Id == dto.ProductId);
            var product = await q.FirstOrDefaultAsync();

            if (product == null)
            {
                throw new KeyNotFoundException($"The product with ID={dto.ProductId} was not found.");
            }
            CartItem cartItem = null;
            Guid     x;

            if (!Guid.TryParse(dto.CartId, out x))
            {
                dto.CartId = Guid.NewGuid().ToString();
            }
            else
            {
                cartItem = await _context.CartItems.FirstOrDefaultAsync(c => c.CartId == dto.CartId && c.ProductId == dto.ProductId);
            }

            if (cartItem == null)
            { // create new
                cartItem = new CartItem
                {
                    Id        = Guid.NewGuid().ToString(),
                    CartId    = dto.CartId,
                    ProductId = dto.ProductId,
                    Quantity  = dto.Quantity,
                    Created   = DateTime.Now
                };
                await _context.CartItems.AddAsync(cartItem);

                await _context.SaveChangesAsync();
            }
            else
            {
                cartItem.Quantity = dto.Quantity;
                _context.Entry(cartItem).Property("Quantity").IsModified = true;
                await _context.SaveChangesAsync();
            }
            return(cartItem.CartId);
        }
Esempio n. 28
0
        private List <CartItemDto> GetCart()
        {
            var cart        = _shoppingCart.GetCart();
            var listCartDto = new List <CartItemDto>();

            foreach (var cartItem in cart)
            {
                var cartDto = new CartItemDto
                {
                    Product  = cartItem.Product,
                    Quantity = cartItem.Quantity
                };
                listCartDto.Add(cartDto);
            }

            return(listCartDto);
        }
Esempio n. 29
0
        public CartItem MapToCartItme(CartItemDto cartItemDto)
        {
            var cartItem = new CartItem();

            if (cartItemDto != null)
            {
                cartItem.CartId       = cartItemDto.CartIdDto;
                cartItem.CreatedDate  = cartItemDto.CreatedDateDto;
                cartItem.Id           = cartItemDto.IdDto;
                cartItem.IsDeleted    = cartItemDto.IsDeletedDto;
                cartItem.ModifiedDate = cartItemDto.ModifiedDateDto;
                cartItem.Quantity     = cartItemDto.QuantityDto;
                cartItem.ProductId    = cartItemDto.productDto.IdDto;
            }
            ;
            return(cartItem);
        }
Esempio n. 30
0
        public async Task <string> UpdateCartItem(CartItemDto cart)
        {
            var editor = _cartRepository.CartItemsById(cart.CartItemId);

            if (editor != null)
            {
                editor.Result.NoOfDays    = cart.NoOfDays;
                editor.Result.DateCreated = cart.DateCreated;
                editor.Result.UserId      = cart.UserId;
                editor.Result.EquipmentId = cart.EquipmentId;
                await _uow.CompleteAsync();

                return(editor.Result.CartItemId.ToString());
            }

            return("");
        }