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); }
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); }
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); }
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()); }