double TaxaServiço.taxa(AluguelVeículo aluguelVeículo, double precoDia)
        {
            double   valorBasico = 0.0;
            TimeSpan prevista    = aluguelVeículo.Prevista.Subtract(aluguelVeículo.Inicio);
            TimeSpan retorno     = aluguelVeículo.Retorno.Subtract(aluguelVeículo.Inicio);
            TimeSpan diferenca   = retorno - prevista;

            if (retorno == prevista)
            {
                if (retorno.TotalHours <= 12 && retorno.TotalHours <= 24)
                {
                    valorBasico += Math.Ceiling(1.0) * precoDia;
                }
                else
                {
                    valorBasico += Math.Ceiling(retorno.TotalDays) * precoDia;
                }
            }
            else
            {
                valorBasico += Math.Ceiling(retorno.TotalDays) * precoDia;
                valorBasico += valorBasico * Math.Ceiling(diferenca.TotalDays) * 0.02;
            }
            return(valorBasico);
        }
Ejemplo n.º 2
0
        public void EmitirFatura(AluguelVeículo aluguelVeículo)
        {
            double valorBasico = taxaServico.taxa(aluguelVeículo, preco);

            double taxa = 0.0;

            taxa = taxaSeguro.taxa(valorBasico);

            aluguelVeículo.FaturaLocaçao = new FaturaLocação(valorBasico, taxa);
        }
Ejemplo n.º 3
0
        public double taxa(AluguelVeículo aluguelVeiculo, double precoKm)
        {
            double valorBasico = 0.0;
            double previstaKm  = aluguelVeiculo.KmPrevista;
            double retornoKm   = aluguelVeiculo.KmRetorno;

            if (previstaKm == retornoKm)
            {
                valorBasico = retornoKm * precoKm;
            }
            else
            {
                double diferenca = retornoKm - previstaKm;
                valorBasico = (retornoKm * precoKm) + (diferenca * 2);
            }
            return(valorBasico);
        }
Ejemplo n.º 4
0
        static void Main(string[] args)
        {
            try {
                Cliente cliente = null;
                Console.WriteLine("Cliente fisico ou jurídico: (F/J)");
                String respostas = Console.ReadLine().ToUpper();

                Console.WriteLine("Digite o nome do condutor: ");
                string nomeCondutor = Console.ReadLine();

                Console.WriteLine("Digite o email para contato: ");
                string email = Console.ReadLine();

                Console.WriteLine("Digite a CNH do condutor: ");
                string cnh = Console.ReadLine();

                Console.WriteLine("Digite a data de nascimento do condutor: Formato dd/mm/yyyy");
                DateTime nascimentoCondutor = DateTime.ParseExact(Console.ReadLine(), "dd/MM/yyyy", CultureInfo.InvariantCulture);

                Console.WriteLine("Digite o sexo do condutor");
                Sexo sexo = Enum.Parse <Sexo>(Console.ReadLine().ToUpper());

                if (respostas.Equals("F"))
                {
                    Console.WriteLine("Digite o cpf do condutor: ");
                    string cpf = Console.ReadLine();

                    cliente = new ClienteFisico(nomeCondutor, email, cnh, nascimentoCondutor, sexo, cpf);

                    Console.WriteLine("Digite a quantidade de números de telefone para contanto: ");
                    int quantidade = int.Parse(Console.ReadLine());
                    if (quantidade <= 0)
                    {
                        throw new DominioException("É necessário digitar pelo menos 1 número de telefone.");
                    }
                    for (int i = 1; i <= quantidade; i++)
                    {
                        Console.WriteLine("Digite o número de telefone: Formato (00)00000-0000");
                        String numero = Console.ReadLine();
                        cliente.addTelefoneCliente(new TelefoneCliente(numero));
                    }
                }
                else if (respostas.Equals("J"))
                {
                    Console.WriteLine("Digite o nome fantasia da empresa: ");
                    string nomeFantasia = Console.ReadLine();

                    Console.WriteLine("Digite o cnpj do condutor: ");
                    string cnpj = Console.ReadLine();


                    cliente = new ClienteJuridico(nomeCondutor, email, cnh, nascimentoCondutor, sexo, nomeFantasia, cnpj);

                    Console.WriteLine("Digite a quantidade de números de telefone para contanto: ");
                    int quantidade = int.Parse(Console.ReadLine());
                    for (int i = 1; i <= quantidade; i++)
                    {
                        Console.WriteLine("Digite o número de telefone: Formato (00)00000-0000");
                        String numero = Console.ReadLine();

                        cliente.addTelefoneCliente(new TelefoneCliente(numero));
                    }
                }
                else
                {
                    Console.WriteLine("Não válido.");
                }

                Console.WriteLine("Digite a placa do veículo: Formato xxx-0000");
                String placa = Console.ReadLine();

                Console.WriteLine("Digite o renavam do veículo: Formato 000.000.000.00");
                String renavam = Console.ReadLine();

                Console.WriteLine("Digite o modelo do carro: ");
                string modelo = Console.ReadLine();

                Console.WriteLine("Digite a marca do modelo: ");
                String marca = Console.ReadLine();

                Console.WriteLine("Digite uma das cores disponíveis do carro: \n");
                Console.WriteLine("Cores Disponíveis: \n Amarelo - Azul - Branco \n Cinza - Laranja - Preto \n Verde - Vermelho");

                Cor cor = Enum.Parse <Cor>(Console.ReadLine().ToUpper());


                Console.WriteLine("Digite o seguro para o carro: \n");
                Console.WriteLine("Seguros Disponíveis: \n CDW (Básico e Obrigatório) \n SLI (Completo e Opcional)");
                Seguro     seguro     = Enum.Parse <Seguro>(Console.ReadLine().ToUpper());
                TaxaSeguro taxaSeguro = (seguro == Seguro.SLI) ? taxaSeguro = new TaxaSeguroSLI() : taxaSeguro = new TaxaSeguroCDW();

                Console.WriteLine("Digite o combustível: \n");
                Console.WriteLine("CCombustíveis disponíveis: \n Alcool - Diesel - Etanol \n Gás - Gasolina");
                Combustível combustivel = Enum.Parse <Combustível>(Console.ReadLine().ToUpper());

                Console.WriteLine("Aluguel por Dia ou quilometragem: (D/K)");
                respostas = Console.ReadLine().ToUpper();

                AluguelVeículo aluguel = new AluguelVeículo();
                ServiçoLocação servico = new ServiçoLocação();
                double         preco   = 0.0;

                if (respostas.Equals("D"))
                {
                    Console.WriteLine("Digite o preço do dia: ");
                    preco = double.Parse(Console.ReadLine());


                    Console.WriteLine("Dia e hora do aluguel: Formato dd/mm/yyyy hh:mm");
                    DateTime inicio = DateTime.ParseExact(Console.ReadLine(), "dd/MM/yyyy HH:mm", CultureInfo.InvariantCulture);

                    Console.WriteLine("Dia e hora da previsão de retorno: Formato dd/mm/yyyy hh:mm");
                    DateTime prevista = DateTime.ParseExact(Console.ReadLine(), "dd/MM/yyyy HH:mm", CultureInfo.InvariantCulture);

                    Console.WriteLine("Dia e hora do retorno: Formato dd/mm/yyyy hh:mm");
                    DateTime fim = DateTime.ParseExact(Console.ReadLine(), "dd/MM/yyyy HH:mm", CultureInfo.InvariantCulture);

                    aluguel = new AluguelVeículo(inicio, prevista, fim, new Veículo(placa, renavam, new Modelo(modelo, new Marca(marca)), cor, seguro, combustivel), cliente);

                    servico = new ServiçoLocação(preco, new TaxaServicoDia(), taxaSeguro);
                }
                else if (respostas.Equals("K"))
                {
                    Console.WriteLine("Digite o preço da Km: ");
                    preco = double.Parse(Console.ReadLine());

                    Console.WriteLine("Digite a Km prevista de rodagem: ");
                    double inicialKm = double.Parse(Console.ReadLine());

                    Console.WriteLine("Digite a Km final de rodagem: ");
                    double finalKm = double.Parse(Console.ReadLine());

                    aluguel = new AluguelVeículo(inicialKm, finalKm, new Veículo(placa, renavam, new Modelo(modelo, new Marca(marca)), cor, seguro, combustivel), cliente);

                    servico = new ServiçoLocação(preco, new TaxaServiçoKm(), taxaSeguro);
                }
                else
                {
                    Console.WriteLine("Não válido");
                }
                servico.EmitirFatura(aluguel);
                Console.WriteLine(aluguel);
            } catch (FormatException e)
            {
                Console.WriteLine(e.Message);
            }catch (ArgumentNullException e)
            {
                Console.WriteLine(e.Message);
            }
            catch (DominioException e)
            {
                Console.WriteLine(e.Message);
            }catch (Exception e)
            {
                Console.WriteLine(e.Message);
            }
        }