public async Task <IActionResult> RemoveItemFromBasket([FromBody] RemoveItemFromBasketContract contract)
        {
            OfflineTolerantItemId itemId;

            try
            {
                itemId = offlineTolerantItemIdConverter.ToDomain(contract.ItemId);
            }
            catch (ArgumentException)
            {
                return(BadRequest("No item id was specified."));
            }

            var command = new RemoveItemFromBasketCommand(new ShoppingListId(contract.ShoppingListId), itemId);

            try
            {
                await commandDispatcher.DispatchAsync(command, default);
            }
            catch (DomainException e)
            {
                return(BadRequest(e.Reason));
            }

            return(Ok());
        }
        public void Handle(RemoveItemFromBasketCommand cmd)
        {
            var basket = this.cBRepo.Get(cmd.CustomerId);

            basket.RemoveItem(cmd.ProductId);
            this.cBRepo.Save(basket);
        }
        public async Task <BasketItemDto> RemoveItemFromBasket(RemoveItemFromBasketCommand command)
        {
            try
            {
                var itemToDelete = await _basketItemRepository.Table.FirstOrDefaultAsync(x =>
                                                                                         x.BasketId == command.BasketId && x.ItemId == command.ItemId);

                if (itemToDelete == null)
                {
                    throw new BasketException(ErrorCode.ItemNotFound, string.Format(ErrorMessageConstants.ItemNotFound, command.ItemId));
                }

                var product = await _productRepository.Table.FirstOrDefaultAsync(x => x.Id == command.ItemId);

                product.Quantity += itemToDelete.Quantity;

                _basketItemRepository.Delete(itemToDelete);
                _productRepository.Update(product);
                await _unitOfWork.CommitAsync();

                return(await GetBasketItems(new GetBasketItemQuery(command.BasketId)));
            }
            catch (Exception e)
            {
                throw new BasketException(ErrorCode.InvalidOperation, ErrorMessageConstants.CanNotRemoveItem, e);
            }
        }
Example #4
0
        public ActionResult RemoveItem(RemoveItemFromBasketCommand command)
        {
            if (CurrentUser != null && CurrentUser.Id != Guid.Empty)
            {
                command.UserId = CurrentUser.Id;
                var result = _commandBus.Send(command);
                return(JsonMessage(result));
            }

            var cookieId      = _cookieQueryService.Retrieve(KadobinCookieId);
            var cookieIdValue = Guid.NewGuid().ToString();

            if (string.IsNullOrEmpty(cookieId))
            {
                _cookieQueryService.Save(KadobinCookieId, cookieIdValue, DateTime.Now.AddDays(30));
            }
            else
            {
                cookieIdValue = cookieId;
            }

            var unauthorizedBasketCommand = new RemoveItemFromUnauthorizedBasketCommand
            {
                CookieId   = Guid.Parse(cookieIdValue),
                ProductIds = command.ProductIds
            };

            var unauthorizedResult = _commandBus.Send(unauthorizedBasketCommand);

            return(JsonMessage(unauthorizedResult));
        }
        public IActionResult RemoveItemFromBasket(int customerId, int productId)
        {
            var cmd = new RemoveItemFromBasketCommand {
                CustomerId = customerId, ProductId = productId
            };

            this.basketService.Submit(cmd);

            return(NoContent());
        }
        public BasketDto RemoveItemFromBasket(RemoveItemFromBasketCommand msg)
        {
            BasketDto basketDto = null;

            var uri = this.GenerateRequestUri($"{msg.CustomerId}", "item");

            var response = this.Delete(uri, new { productId = msg.ProductId });

            if (response.IsSuccessStatusCode)
            {
                basketDto = this.GetBasket(new GetBasketQuery {
                    CustomerId = msg.CustomerId
                });
            }
            return(basketDto);
        }
Example #7
0
        public void ShouldRemoveItemToBasketGivenItemRemovalMessage()
        {
            //arrange
            var removeItemMsg = new RemoveItemFromBasketCommand
            {
                CustomerId = expectedBasketDto.CustomerId,
                ProductId  = expectedBasketDto.Items[0].ProductId
            };
            var sut = new BasketManagementClient(this.clientBaseUri);

            //act
            var result = sut.RemoveItemFromBasket(removeItemMsg);

            //assert
            Assert.Equal(1, result.Items.Count);
            Assert.Equal(expectedBasketDto.Items[1].ProductId, result.Items[0].ProductId);
            Assert.Equal(expectedBasketDto.Items[1].Quantity, result.Items[0].Quantity);
        }
 public void Setup()
 {
     _stockRepository  = Substitute.For <IStockRepository>();
     _basketRepository = Substitute.For <IBasketRepository>();
     _command          = new RemoveItemFromBasketCommand(_stockRepository, _basketRepository);
 }