Пример #1
0
        public static void MainMenu(Sistema sistema)
        {
            string           escolha;
            Relatorio        relatorio = new Relatorio();
            VeiculoNaEstrada veiculoNaEstrada;

            do
            {
                Console.Clear();
                Console.WriteLine("\nEscolha uma das opções abaixo:\n");
                Console.WriteLine("1) Cadastrar um veiculo");
                Console.WriteLine("2) Cadastrar uma viagem");
                Console.WriteLine("3) Vincular um veiculo a uma viagem");
                Console.WriteLine("4) Selecionar um veiculo e viagem");
                Console.WriteLine("5) Dirigir");
                Console.WriteLine("6) Abastecer");
                Console.WriteLine("7) Calibrar pneu");
                Console.WriteLine("8) Mostrar informações");
                Console.WriteLine("0) Sair");
                Console.Write("\nOpção escolhida: ");
                escolha = Console.ReadLine().Trim();
                Console.Clear();

                switch (escolha)
                {
                case "0":

                    MensagensComDelay.MensagemSairPrograma();
                    Environment.Exit(0);
                    break;

                case "1":

                    sistema.Veiculos.Add(VeiculoCore.CadastrarVeiculo(sistema, new Veiculo()));
                    Console.Clear();
                    MensagensComDelay.MensagemVeiculoCadastrado();
                    break;

                case "2":

                    sistema.Viagens.Add(ViagemCore.CadastrarViagem(sistema, new Viagem()));
                    Console.Clear();
                    MensagensComDelay.MensagemViagemCadastrada();
                    break;

                case "3":

                    if (sistema.Veiculos.Count > 0 && sistema.Viagens.Count > 0)
                    {
                        VeiculoCore.MostraVeiculosNaLista(sistema);
                        Veiculo veiculo = VeiculoCore.EncontraVeiculoNaLista(sistema);

                        while (veiculo == null)
                        {
                            MensagensComDelay.MensagemPlacaInvalida();
                            veiculo = VeiculoCore.EncontraVeiculoNaLista(sistema);
                        }

                        Console.Clear();
                        ViagemCore.MostraViagensNaLista(sistema);
                        Viagem viagem = ViagemCore.EncontrarViagemNaLista(sistema);

                        while (viagem == null)
                        {
                            MensagensComDelay.MensagemCodigoViagemInvalido();
                            viagem = ViagemCore.EncontrarViagemNaLista(sistema);
                        }

                        Console.Clear();
                        sistema.Veiculos.Remove(veiculo);
                        sistema.Viagens.Remove(viagem);
                        veiculoNaEstrada = new VeiculoNaEstrada(veiculo, viagem, VeiculoNaEstradaCore.ObtemCodigoVeiculoNaEstrada(sistema));
                        sistema.VeiculosNaEstrada.Add(veiculoNaEstrada);
                        sistema.Relatorios.Add(new Relatorio(sistema, veiculoNaEstrada));
                        MensagensComDelay.MensagemVeiculoNaEstradaVinculado();
                    }

                    else if (sistema.Veiculos.Count == 0)
                    {
                        MensagensComDelay.MensagemSemVeiculoNaLista();
                    }

                    else if (sistema.Viagens.Count == 0)
                    {
                        MensagensComDelay.MensagemSemViagemNaLista();
                    }

                    break;

                case "4":

                    if (sistema.VeiculosNaEstrada.Count == 0)
                    {
                        MensagensComDelay.MensagemSemVeiculosNaEstrada();
                    }

                    else
                    {
                        VeiculoNaEstradaCore.MostraVeiculosNaEstradaCadastrados(sistema);

                        do
                        {
                            veiculoNaEstrada = VeiculoNaEstradaCore.EncontrarVeiculoNaEstradaNaLista(sistema);

                            if (veiculoNaEstrada == null)
                            {
                                Console.ForegroundColor = ConsoleColor.Red;
                                Console.WriteLine("\nNão foi encontrado nem um veiculo na estrada com esse codigo!");
                                Console.ForegroundColor = ConsoleColor.White;
                            }
                        } while (veiculoNaEstrada == null);

                        relatorio = RelatorioCore.EncontrarRelatorioNaListaPeloVeiculo(sistema, veiculoNaEstrada);

                        //Essa comparação é necessária. A primeira vez que selecionar esse VeiculoNaEstrada, ele vai atribuir na lista os parametros base do StatusPneu e MudancaClimatica.
                        if (relatorio.StatusPneu.Count == 0)
                        {
                            //Variaveis auxiliares para construir os objetos e inserir dentro de StatusPneu e Clima.
                            double multiplicadorClima = 0, distanciaOcorrencia = 0, multiplicadorPneu = 0;
                            int    statusAtualPneu = 0;
                            string tipoStatus      = "";

                            switch (veiculoNaEstrada.Viagem.Clima)
                            {
                            case "nevando":

                                multiplicadorClima = 0.3;
                                break;

                            case "chuvoso":

                                multiplicadorClima = 0.19;
                                break;

                            case "ensolarado":

                                multiplicadorClima = 0;
                                break;
                            }

                            switch (veiculoNaEstrada.Veiculo.StatusPneu)
                            {
                            case "novo":

                                multiplicadorPneu = 0;
                                statusAtualPneu   = 3;
                                tipoStatus        = "novo";
                                break;

                            case "pouco desgastado":

                                multiplicadorPneu = 0.0725;
                                statusAtualPneu   = 2;
                                tipoStatus        = "pouco desgastado";
                                break;

                            case "desgastado":

                                multiplicadorPneu = 0.0915;
                                statusAtualPneu   = 1;
                                tipoStatus        = "desgastado";
                                break;
                            }

                            relatorio.Clima.Add(new MudancaClimatica(distanciaOcorrencia, multiplicadorClima, veiculoNaEstrada.Viagem.Clima));
                            relatorio.StatusPneu.Add(new DesgastePneu(distanciaOcorrencia, multiplicadorPneu, 0, statusAtualPneu, tipoStatus));
                        }
                    }

                    Console.Clear();
                    MensagensComDelay.MensagemVeiculoNaEstradaSelecionado();
                    break;

                case "5":

                    if (relatorio.StatusPneu.Count == 0)
                    {
                        MensagensComDelay.MensagemVeiculoNaEstradaNaoSelecionado();
                    }

                    else if (relatorio.VeiculoNaEstrada.Veiculo.QuantidadeAlcool + relatorio.VeiculoNaEstrada.Veiculo.QuantidadeGasolina == 0)
                    {
                        MensagensComDelay.MensagemTanqueSemCombustivel();
                    }

                    //Estou usando o ElementAt para buscar o ultimo status do pneu adicionado na lista. A comparação com 0 é para verificar se o pneu está furado.
                    else if (relatorio.StatusPneu.ElementAt(relatorio.StatusPneu.Count - 1).StatusAtualDoPneu == 0)
                    {
                        VeiculoCore.CalibrarPneu(relatorio);
                    }

                    else
                    {
                        Console.WriteLine("Gostaria de deixar no piloto automatico?");
                        string decisao = Validacao.ValidaSeSimOuNao();

                        if (decisao == "S")
                        {
                            VeiculoCore.ObtemDistanciaASerPercorrida(relatorio, "S");
                        }

                        else
                        {
                            VeiculoCore.ObtemDistanciaASerPercorrida(relatorio, "N");
                        }

                        if (relatorio.KilometrosPercorridos == relatorio.VeiculoNaEstrada.Viagem.DistanciaTotal)
                        {
                            relatorio.ViagemFinalizada = "foi finalizada";
                            sistema.VeiculosNaEstrada.Remove(relatorio.VeiculoNaEstrada);
                            relatorio = new Relatorio();
                        }
                    }

                    break;

                case "6":

                    if (relatorio.Clima == null)
                    {
                        MensagensComDelay.MensagemVeiculoNaEstradaNaoSelecionado();
                    }

                    else
                    {
                        if (relatorio.VeiculoNaEstrada.Veiculo.CapacidadeDoTanque == relatorio.VeiculoNaEstrada.Veiculo.QuantidadeAlcool + relatorio.VeiculoNaEstrada.Veiculo.QuantidadeGasolina)
                        {
                            MensagensComDelay.MensagemTanqueCheio();
                        }

                        else
                        {
                            Console.Write("Gostaria de encher o tanque? (S|N) : ");
                            string encherTanque = Validacao.ValidaSeSimOuNao();

                            if (relatorio.VeiculoNaEstrada.Veiculo.TipoDeTanque == "FLEX")
                            {
                                escolha = Validacao.ValidaSeAbasteceGasolinaOuAlcool();
                            }

                            VeiculoCore.Abastecer(relatorio.VeiculoNaEstrada.Veiculo, escolha, encherTanque);
                            relatorio.QuantidadeAbastecimento++;
                            MensagensComDelay.MensagemCarroAbastecido();
                        }
                    }

                    break;

                case "7":

                    if (relatorio.StatusPneu.Count == 0)
                    {
                        MensagensComDelay.MensagemVeiculoNaEstradaNaoSelecionado();
                    }

                    else
                    {
                        VeiculoCore.CalibrarPneu(relatorio);
                    }

                    break;

                case "8":

                    SubMenuExibir(sistema);
                    continue;    //Foi usado o continue nesse caso, pois não há necessidade de salvar alguma alteração depois de exibir os dados.

                default:

                    MensagensComDelay.MensagemEscolhaInvalida();
                    break;
                }

                BancoDeDados.BancoDeDados.Salvar(sistema);
            } while (true);
        }
Пример #2
0
        public static void SubMenuExibir(Sistema sistema)
        {
            string escolha;

            do
            {
                Console.Clear();
                Console.WriteLine("\nEscolha uma das opções abaixo:\n");
                Console.WriteLine("1) Exibir veiculos cadastrados");
                Console.WriteLine("2) Exibir viagens cadastradas");
                Console.WriteLine("3) Exibir os veiculos na estrada");
                Console.WriteLine("4) Exibir os relatórios");
                Console.WriteLine("5) Exibir um relatório específico");
                Console.WriteLine("9) Voltar ao menu anterior");
                Console.WriteLine("0) Sair");
                Console.Write("\nOpção escolhida: ");
                escolha = Console.ReadLine();

                Console.Clear();

                switch (escolha)
                {
                case "0":

                    MensagensComDelay.MensagemSairPrograma();
                    Environment.Exit(0);
                    break;

                case "1":

                    if (sistema.Veiculos.Count == 0)
                    {
                        MensagensComDelay.MensagemSemVeiculoNaLista();
                    }

                    else
                    {
                        VeiculoCore.MostraVeiculosNaLista(sistema);
                    }

                    break;

                case "2":

                    if (sistema.Viagens.Count == 0)
                    {
                        MensagensComDelay.MensagemSemViagemNaLista();
                    }

                    else
                    {
                        ViagemCore.MostraViagensNaLista(sistema);
                    }

                    break;

                case "3":

                    if (sistema.VeiculosNaEstrada.Count == 0)
                    {
                        MensagensComDelay.MensagemSemVeiculosNaEstrada();
                    }

                    else
                    {
                        VeiculoNaEstradaCore.MostraVeiculosNaEstradaCadastrados(sistema);
                    }

                    break;

                case "4":

                    if (sistema.Relatorios.Count == 0)
                    {
                        MensagensComDelay.MensagemSemRelatorioNaLista();
                    }

                    else
                    {
                        RelatorioCore.MostraRelatorios(sistema);
                        Console.WriteLine("Aperte qualquer tecla para continuar.");
                        Console.ReadKey();
                    }

                    break;

                case "5":

                    if (sistema.Relatorios.Count == 0)
                    {
                        MensagensComDelay.MensagemSemRelatorioNaLista();
                    }

                    else
                    {
                        RelatorioCore.MostraRelatorios(sistema);
                        Relatorio relatorio;

                        do
                        {
                            relatorio = RelatorioCore.EncontrarRelatorioNaLista(sistema);

                            if (relatorio == null)
                            {
                                Console.ForegroundColor = ConsoleColor.Red;
                                Console.WriteLine("\nNão foi encontrado nem um relatorio com esse codigo!");
                                Console.ForegroundColor = ConsoleColor.White;
                            }
                        } while (relatorio == null);

                        Console.Clear();
                        RelatorioCore.ImprimeInformacoesCompletasRelatorio(relatorio);
                    }

                    break;

                case "9":
                    break;

                default:
                    MensagensComDelay.MensagemEscolhaInvalida();
                    break;
                }
            } while (escolha != "9");
        }