Exemple #1
0
        public AluguelModel ObterAluguel(string id)
        {
            AluguelModel model    = null;
            var          entidade = _aluguelRepository.ObterPorId(id);

            if (entidade != null)
            {
                var veiculo = _veiculoRepository.ObterPorId(entidade.VeiculoId);

                model = new AluguelModel
                {
                    Id                       = entidade.Id.ToString(),
                    ClienteId                = entidade.ClienteId,
                    VeiculoId                = entidade.VeiculoId,
                    Veiculo                  = veiculo != null ? $"{veiculo.ModeloVeiculo.Montadora.Name} / {veiculo.ModeloVeiculo.Modelo}" : null,
                    Placa                    = veiculo?.NumeroPlaca,
                    NumeroControle           = entidade.NumeroControle,
                    EfetuadaEm               = entidade.EfetuadaEm,
                    DataFechamento           = entidade.DataFechamento,
                    DataHoraDevolucaoVeiculo = entidade.DataHoraDevolucaoVeiculo,
                    DataHoraRetiradaVeiculo  = entidade.DataHoraRetiradaVeiculo,
                    Situacao                 = entidade.Situacao.ToString(),
                    Opcionais                = entidade.Opcionais.Select(o => o.Name).ToList()
                };
            }

            return(model);
        }
Exemple #2
0
        public override Task Handle(Domain.Events.VeiculoDevolvido notification, CancellationToken cancellationToken)
        {
            var aluguel = _aluguelRepository.ObterPorId(notification.AluguelId);

            aluguel.SinalizarVeiculoDevolvido(notification.DataHoraDevolucao);
            _aluguelRepository.Update(aluguel);

            return(Task.CompletedTask);
        }
Exemple #3
0
        public override Task Handle(Domain.Events.AluguelEncerrado notification, CancellationToken cancellationToken)
        {
            var aluguel = _aluguelRepository.ObterPorId(notification.AluguelId);
            var veiculo = _veiculoRepository.ObterPorId(aluguel.VeiculoId);

            var fatura = _faturarAluguelService.Processar(aluguel, veiculo, _parametrosCobranca.ValorHoraBaseAluguel,
                                                          _parametrosCobranca.ValorHoraBaseOpcionais, _calculadoraImpostos);

            _faturaRepository.Add(fatura);

            return(Task.CompletedTask);
        }
Exemple #4
0
        public override async Task <CommandResult> Handle(FecharAluguelCommand request, CancellationToken cancellationToken)
        {
            var aluguel = _aluguelRepository.ObterPorId(request.AluguelId);

            if (aluguel.EstaEncerrado)
            {
                return(CommandResult.Error($"O Aluguel {aluguel.NumeroControle} já está fechado."));
            }

            aluguel.Encerrar();
            _aluguelRepository.Update(aluguel);
            await aluguel.RaiseEvents(_mediator);

            return(CommandResult.Ok());
        }