public void DeleteItem(string id, string itemReference) { BasketDTOInMemory basket = _baskets.Find(x => x.Id == id); BasketItemDTO item = basket.Items.Find(x => x.ProductReference == itemReference); basket.Items.Remove(item); }
public async Task <ApiResultDTO <CustomerBasketDTO> > AddItemToBasket(BasketItemDTO basketItemDTO) { var saveItem = new ApiResultDTO <CustomerBasketDTO> { Result = new CustomerBasketDTO() }; #region stock control var isProductStockExist = _basketService.CheckProductStock(new CheckProductStockDTO { ProductId = basketItemDTO.ProductId, Quantity = basketItemDTO.Quantity }); if (!isProductStockExist) { //If product is not enough or not exist saveItem.ResultType = DTO.ResultType.NotFound; saveItem.Message = "Not enough product"; return(saveItem); } #endregion var existBasketItems = await GetBasketAsync(basketItemDTO.CustomerId); //if there is not basket in Redis if (existBasketItems != null && existBasketItems.BasketItems != null && existBasketItems.BasketItems.Any()) { //if same product added to card then it will sum existing and new quantity if (existBasketItems.BasketItems.Any(x => x.ProductId == basketItemDTO.ProductId)) { var existingProduct = existBasketItems .BasketItems.First(x => x.ProductId == basketItemDTO.ProductId); existingProduct.Quantity += basketItemDTO.Quantity; } else { existBasketItems.BasketItems.Add(basketItemDTO); } saveItem.Result = existBasketItems; saveItem.Message = "Item successfully added."; } else { saveItem.Result.CustomerId = basketItemDTO.CustomerId; saveItem.Result.BasketItems.Add(basketItemDTO); saveItem.Message = "Item successfully added."; } saveItem.Result = await UpdateBasketAsync(saveItem.Result); return(saveItem); }
public async Task <IActionResult> AddBasketItem([FromBody] BasketItemModel basketItemModel) { var basketItem = new BasketItemDTO(); basketItem.InjectFrom(basketItemModel); var result = await _redisBasketService.AddItemToBasket(basketItem); return(Ok(result)); }
public void Add(AddToBasketRequestDTO request) { var basketItem = new BasketItemDTO() { ProductId = request.ProductId, Quantity = request.Quantity, UserId = request.UserId }; var basketEngine = _serviceProvider.GetService <IBasketEngine>(); basketEngine.Add(basketItem); }
public BasketItemDTO Add(BasketItemDTO basketItem) { var basketId = Get(basketItem.UserId); var basketItemRepository = _serviceProvider.GetService <IBasketItemRepository>(); var entity = new BasketItem() { BasketId = basketId.Id, ProductId = basketItem.ProductId, Quantity = basketItem.Quantity, Status = true }; basketItemRepository.Insert(entity); basketItem.Id = entity.Id; return(basketItem); }
public async Task Post_cart_success() { //Arrange var fakeCustomerId = "1"; var fakeBasket = GetFakeBasket(fakeCustomerId); var fakeCheckProduct = new BasketItemDTO { ProductId = "fakeProduct", ProductName = "fakeItem", UnitPrice = 500, Quantity = 1, CustomerId = fakeCustomerId }; fakeBasket.Result.BasketItems.Add(fakeCheckProduct); //Setting services _basketServiceMock.Setup(x => x.CheckProductStock(It.IsAny <CheckProductStockDTO>())) .Returns(true); _redisBasketServiceMock.Setup(x => x.AddItemToBasket(It.IsAny <BasketItemDTO>())) .Returns(Task.FromResult(fakeBasket)); //Act var basketController = new BasketController(_redisBasketServiceMock.Object); basketController.ControllerContext.HttpContext = _contextMock.Object; var actionResult = await basketController.AddBasketItem(new BasketItemModel()); //Assert var viewResult = Assert.IsType <OkObjectResult>(actionResult); Assert.Equal(viewResult.StatusCode, StatusCodes.Status200OK); }