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