public Aluguel Alugar(AluguelDTO aluguel) { if (aluguel.DataEmprestimo > aluguel.DataDevolucao) { throw new Exception("A data de empréstimo deve ser anterior à data de entrega."); } DateTime inicio = aluguel.DataEmprestimo.GetValueOrDefault(); DateTime entrega = aluguel.DataDevolucao.GetValueOrDefault(); IList <Veiculo> veiculosDisponiveis = veiculoRepositorio.ListarDisponiveis(inicio, entrega); Veiculo veiculo = veiculosDisponiveis.FirstOrDefault(x => x.Id == aluguel.Veiculo.Id); if (veiculo == null) { throw new Exception("Veículo indisponível durante o período selecionado."); } Aluguel novoAluguel = new Aluguel(); novoAluguel.Clientes = new List <Cliente>(); novoAluguel.DataEmprestimo = inicio; novoAluguel.DataDevolucaoContratada = entrega; novoAluguel.DataDevolucao = null; novoAluguel.Veiculo = veiculo; novoAluguel.Clientes.Add(clienteRepositorio.buscarPorCpf(aluguel.Cpf)); return(repositorio.Inserir(novoAluguel)); }
public IList <Veiculo> DisponiveisEntreDatas(DateTime begin, DateTime end, Localidade localidade) { if (begin > end) { throw new Exception("A data de início deve ser anterior à data de devolução"); } return(repositorio.ListarDisponiveis(begin, end, localidade)); }