public async Task <Guid> Handle(AlterarSituacaoPedidoCommand request, CancellationToken cancellationToken)
        {
            var historicoPedido = new HistoricoPedido();

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

            if (pedido == null)
            {
                request.AddNotification("Pedido", $"Pedido({request.IDPedido}) não encontrado no banco de dados.");
            }
            else
            {
                historicoPedido = new HistoricoPedido(request.Situacao, pedido.Id);
            }

            if (historicoPedido.Invalid || request.Invalid)
            {
                historicoPedido.AddNotifications(request.Notifications);

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

                return(await Task.FromResult(Guid.Empty));
            }

            _historicoPedidoRepository.Add(historicoPedido);

            return(await Task.FromResult(historicoPedido.Id));
        }
        public async Task <Guid> AlterarSituacao(AlterarSituacaoPedidoViewModel alterarSituacaoPedidoViewModel)
        {
            var enumSituacao = Enum.Parse <EnumSituacaoPedido>(alterarSituacaoPedidoViewModel.Situacao.ToString());

            var command = new AlterarSituacaoPedidoCommand(alterarSituacaoPedidoViewModel.IDPedido, enumSituacao);

            return(await _mediator.Send(command));
        }
        public async Task DeveRetornarErroSePedidoNaoExistirAoAlterarSituacao()
        {
            var handler = new PedidoCommandHandler(
                _pedidoGetEntityNullRepository,
                _garcomRepository,
                _comandaRepository,
                _historicoPedidoRepository,
                _produtoPedidoRepository,
                _clienteRepository,
                _mediator);
            var command = new AlterarSituacaoPedidoCommand(Guid.NewGuid(), Enums.EnumSituacaoPedido.Aberto);

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

            Assert.Equal(Guid.Empty, retorno);
        }
        public async Task DeveRetornarErroSeInformarSituacaoInvalidaAoAlterarSituacao()
        {
            var handler = new PedidoCommandHandler(
                _pedidoRepository,
                _garcomRepository,
                _comandaRepository,
                _historicoPedidoRepository,
                _produtoPedidoRepository,
                _clienteRepository,
                _mediator);

            EnumSituacaoPedido enumSituacaoPedido = Enum.Parse <EnumSituacaoPedido>("9999");

            var command = new AlterarSituacaoPedidoCommand(Guid.NewGuid(), enumSituacaoPedido);

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

            Assert.Equal(Guid.Empty, retorno);
        }