static void Main(string[] args) { Console.WriteLine("Entre com os dados da locação:"); Console.Write("Modelo do carro: "); string modelo = Console.ReadLine(); Console.Write("Data de aluguel (dd/MM/yyyy hh:mm): "); DateTime dataAluguel = DateTime.ParseExact(Console.ReadLine(), "dd/MM/yyyy HH:mm", CultureInfo.InvariantCulture); Console.Write("Data de devolução (dd/MM/yyyy hh:mm): "); DateTime dataDevolucao = DateTime.ParseExact(Console.ReadLine(), "dd/MM/yyyy HH:mm", CultureInfo.InvariantCulture); Console.Write("Entre o valor por hora: "); double valorHora = double.Parse(Console.ReadLine(), CultureInfo.InvariantCulture); Console.Write("Entre o valor por dia: "); double valorDia = double.Parse(Console.ReadLine(), CultureInfo.InvariantCulture); LocacaoDeCarro aluguelCarro = new LocacaoDeCarro(dataAluguel, dataDevolucao, new Veiculo(modelo)); LocacaoServico locacaoServico = new LocacaoServico(valorHora, valorDia, new ImpostoBrasilServico()); locacaoServico.ProcessoLocacao(aluguelCarro); Console.WriteLine(); Console.WriteLine("FATURA:"); Console.WriteLine(aluguelCarro.Fatura); }
public void ProcessoLocacao(LocacaoDeCarro locacaoDeCarro) { //calcula a duração do aluguel com base no instante de locação e o instante de devolução TimeSpan duracao = locacaoDeCarro.DataDevolucao.Subtract(locacaoDeCarro.DataAlguel); double PagamentoMinimo = 0.0; if (duracao.TotalHours <= 12) { PagamentoMinimo = PrecoHora * Math.Ceiling(duracao.TotalHours); } else { PagamentoMinimo = PrecoDia * Math.Ceiling(duracao.TotalDays); } double imposto = _ImpostoBrasilServico.Imposto(PagamentoMinimo); locacaoDeCarro.Fatura = new Fatura(PagamentoMinimo, imposto); }