public async Task <bool> Handle(RemoverProdutoPedidoCommand request, CancellationToken cancellationToken)
        {
            var produtoPedido = _produtoPedidoRepository.GetEntityById(request.IDProdutoPedido);

            if (produtoPedido == null)
            {
                request.AddNotification("RemoverProdutoPedidoCommand", $"Produto ({request.IDProdutoPedido}) não encontrado no banco de dados.");
            }

            var pedido = _pedidoRepository.GetEntityById(produtoPedido.IDPedido);

            if (pedido.Produtos.Count() == 1)
            {
                request.AddNotification("RemoverProdutoPedidoCommand", $"Não é permitido remover todos os produtos. Feche a comanda ou adicione outro produto para remover este.");
            }

            if (request.Invalid)
            {
                await _mediator.Publish(new DomainNotification
                {
                    Erros = request.Notifications
                }, cancellationToken);

                return(await Task.FromResult(false));
            }

            _produtoPedidoRepository.Remove(produtoPedido.Id);

            return(await Task.FromResult(true));
        }
        public async Task DeveRetornarErroSePedidoNaoExistirAoRemoverProdutoPedido()
        {
            var handler = new PedidoCommandHandler(
                _pedidoGetEntityNullRepository,
                _garcomRepository,
                _comandaRepository,
                _historicoPedidoRepository,
                _produtoPedidoRepository,
                _clienteRepository,
                _mediator);

            var command = new RemoverProdutoPedidoCommand(Guid.NewGuid());

            var retorno = await handler.Handle(command, new CancellationToken());

            Assert.False(retorno);
        }
        public async Task <bool> RemoverProdutoPedido(Guid idProdutoPedido)
        {
            var command = new RemoverProdutoPedidoCommand(idProdutoPedido);

            return(await _mediator.Send(command));
        }