예제 #1
0
        public override async Task <CommandResult> Handle(RetirarVeiculoCommand request, CancellationToken cancellationToken)
        {
            var aluguel = _aluguelRepository.ObterPorNumeroControle(request.NumeroControleAluguel);

            if (aluguel == null)
            {
                return(CommandResult.Error($"O aluguel com número de controle {request.NumeroControleAluguel} não foi encontrado"));
            }

            var veiculo = _veiculoRepository.ObterPorPlaca(request.NumeroPlaca);

            if (veiculo == null)
            {
                return(CommandResult.Error($"O veículo placa {request.NumeroPlaca} não foi encontrado"));
            }

            veiculo.Retirar(aluguel.Id.ToString(), request.DataHoraRetirada.Value);
            if (veiculo.Invalid)
            {
                return(CommandResult.Error(veiculo.Notifications));
            }

            _veiculoRepository.Update(veiculo);
            await veiculo.RaiseEvents(_mediator);

            return(CommandResult.Ok());
        }