public async Task <bool> Handle(DeleteItemFromBasket request, CancellationToken cancellationToken)
        {
            var basket =
                (await _basketRepository.FindAsync(x => x.GoodsId == request.GoodsId && x.UserId == request.UserId)).Data;

            if (basket == null)
            {
                throw new DomainException(ErrorType.BasketDoesNotExist);
            }

            if (basket.Count < request.Count)
            {
                throw new DomainException(ErrorType.BasketItemCountLessThenNeed);
            }

            if (basket.Count == request.Count)
            {
                _basketRepository.Delete(basket);
            }

            else
            {
                basket.Count -= request.Count;
                _basketRepository.Update(basket);
            }

            await _basketRepository.SaveAsync().ConfigureAwait(false);

            return(true);
        }
Beispiel #2
0
        public async Task <IActionResult> RemoveItemFromBasket([FromBody] DeleteItemFromBasket command)
        {
            command.UserId = UserId;
            var result = await _mediator.Send(command);

            return(JsonResult(result));
        }