Exemple #1
0
        static void Main(string[] args)
        {
            Garagens garagens = new Garagens();

            garagens.incluir(new Garagem(1, "Congonhas"));
            garagens.incluir(new Garagem(2, "Guarulhos"));

            garagens.incluirVeic(new Veiculo(1, "CARRO1", 20));
            garagens.incluirVeic(new Veiculo(2, "CARRO2", 30));
            garagens.incluirVeic(new Veiculo(3, "CARRO3", 22));
            garagens.incluirVeic(new Veiculo(4, "CARRO4", 15));
            garagens.incluirVeic(new Veiculo(5, "CARRO5", 2));
            garagens.incluirVeic(new Veiculo(6, "CARRO6", 48));
            garagens.incluirVeic(new Veiculo(7, "CARRO7", 12));
            garagens.incluirVeic(new Veiculo(8, "CARRO8", 20));

            int opc = 0;

            do
            {
                Console.Clear();
                Console.WriteLine("0.Sair");
                Console.WriteLine("1.Cadastrar veículo");
                Console.WriteLine("2.Cadastrar garagem");
                Console.WriteLine("3.Iniciar jornada");
                Console.WriteLine("4.Encerrar jornada");
                Console.WriteLine("5.Listar veículos em determinada garagem");
                Console.WriteLine("6.Listar viagens");
                Console.WriteLine("7.Listar garagens");
                Console.WriteLine("8.Adicionar pessoas");
                Console.WriteLine("\nDigite a sua opção: ");
                opc = int.Parse(Console.ReadLine());

                switch (opc)
                {
                    #region 1.Cadastrar veículo
                case 1:
                    if (!garagens.jornadaAtiva)
                    {
                        Console.Clear();
                        Console.WriteLine("Digite a placa do veículo: ");
                        string placa = Console.ReadLine();
                        Console.WriteLine("Digite a lotação máxima do veículo: ");
                        int lotacao = int.Parse(Console.ReadLine());
                        garagens.incluirVeic(new Veiculo(garagens.novoIdVeiculo(), placa, lotacao));
                        Console.Clear();
                        Console.WriteLine("Veículo cadastrado com sucesso...");
                    }
                    else
                    {
                        Console.Clear();
                        Console.WriteLine("Não é possível cadastrar veículos enquanto a jornada estiver ativa...");
                    }
                    Console.ReadKey();
                    break;
                    #endregion

                    #region 2.Cadastrar garagem
                case 2:
                    if (!garagens.jornadaAtiva)
                    {
                        Console.Clear();
                        Console.WriteLine("Digite o nome da garagem: ");
                        string nomeG = Console.ReadLine();
                        garagens.incluir(new Garagem(garagens.novoIdGaragem(), nomeG));
                        Console.Clear();
                        Console.WriteLine("Garagem cadastrada com sucesso...");
                    }
                    else
                    {
                        Console.Clear();
                        Console.WriteLine("Não é possível cadastrar garagens enquanto a jornada estiver ativa...");
                    }
                    Console.ReadKey();
                    break;
                    #endregion

                    #region 3.Iniciar jornada
                case 3:
                    if (garagens.jornadaAtiva)
                    {
                        Console.Clear();
                        Console.WriteLine("A jornada já está ativa!");
                    }
                    else if (garagens.veiculos.Count <= 0)
                    {
                        Console.Clear();
                        Console.WriteLine("Não existem veiculos para iniciar a jornada!");
                    }
                    else if (garagens.garagens.Count <= 0)
                    {
                        Console.Clear();
                        Console.WriteLine("Não existem garagens para iniciar a jornada!");
                    }
                    else
                    {
                        Console.Clear();
                        garagens.iniciarJornada();
                        Console.WriteLine("A jornada foi iniciada!");
                    }
                    Console.ReadKey();
                    break;
                    #endregion

                    #region 4.Encerrar Jornada
                case 4:
                    if (!garagens.jornadaAtiva)
                    {
                        Console.Clear();
                        Console.WriteLine("A jornada já está encerrada!");
                    }
                    else
                    {
                        Console.Clear();
                        garagens.encerrarJornada();
                        Console.WriteLine("A jornada foi encerrada!");
                    }
                    Console.ReadKey();
                    break;
                    #endregion

                    #region 5.Listar veículos em determinada garagem
                case 5:
                    Console.Clear();
                    if (garagens.jornadaAtiva)
                    {
                        Console.WriteLine("Selecione a garagem a qual deseja consultar os veículos: ");
                        int pos = int.Parse(Console.ReadLine());
                        pos--;
                        Console.Clear();
                        foreach (Veiculo v in garagens.garagens[pos].veiculos)
                        {
                            Console.WriteLine("ID: " + v.Id + " | Placa: " + v.Placa + " | Lotação: " + v.Lotacao);
                        }
                    }
                    else
                    {
                        Console.WriteLine("Não há veículos nas garagens pois a jornada está ativa");
                    }
                    Console.ReadKey();
                    break;
                    #endregion

                    #region 6.Listar viagens
                case 6:
                    Console.Clear();
                    Console.WriteLine("Viagens: ");
                    foreach (Viagem v in garagens.viagens.viagens)
                    {
                        Console.WriteLine("\nID: " + v.ID1);
                        Console.WriteLine("Garagem de origem: " + v.Origem.Local);
                        Console.WriteLine("Garagem de destino: " + v.Destino.Local);
                        Console.WriteLine("Veículo: " + v.Veiculo.Placa);
                    }
                    Console.ReadKey();
                    break;
                    #endregion

                    #region 7.Listar garagens
                case 7:
                    Console.Clear();
                    Console.WriteLine("Garagens: ");
                    foreach (Garagem g in garagens.garagens)
                    {
                        Console.WriteLine("\nID: " + g.Id);
                        Console.WriteLine("Local: " + g.Local);
                        Console.WriteLine("Fila: " + g.pessoas.Count + " pessoas");
                    }
                    Console.ReadKey();
                    break;
                    #endregion

                    #region 8.Adicionar pessoas
                case 8:
                    Console.Clear();
                    if (garagens.jornadaAtiva)
                    {
                        Console.WriteLine("Digite o ID da garagem de origem: ");
                        int idG = int.Parse(Console.ReadLine());
                        idG--;

                        if (idG < garagens.garagens.Count)
                        {
                            Garagem gOrigem = garagens.garagens[idG];

                            gOrigem.addPessoas();
                            Console.Clear();
                            Console.WriteLine("Adicionada uma pessoa na fila");

                            if (gOrigem.veiculos.Count > 0)
                            {
                                if (gOrigem.vaiViajar())
                                {
                                    //NOVO
                                    int indexGDestino = gOrigem.Id + 1;
                                    if (indexGDestino == garagens.garagens.Count())
                                    {
                                        indexGDestino = 0;
                                    }

                                    Garagem gDestino = garagens.garagens[indexGDestino];

                                    Veiculo vVeiculo = gOrigem.veiculos.Peek();

                                    for (int i = 0; i < gOrigem.veiculos.First().Lotacao; i++)
                                    {
                                        gOrigem.removePessoas();
                                    }

                                    garagens.executaViagem(gOrigem, gDestino, vVeiculo);

                                    while (gDestino.veiculos.Count == 1 && vVeiculo.Lotacao >= gDestino.pessoas.Count)
                                    {
                                        gOrigem = gDestino;

                                        indexGDestino = gOrigem.Id + 1;
                                        if (indexGDestino == garagens.garagens.Count())
                                        {
                                            indexGDestino = 0;
                                        }

                                        gDestino = garagens.garagens[indexGDestino];

                                        vVeiculo = gOrigem.veiculos.Peek();

                                        for (int i = 0; i < gOrigem.veiculos.First().Lotacao; i++)
                                        {
                                            gOrigem.removePessoas();
                                        }

                                        garagens.executaViagem(gOrigem, gDestino, vVeiculo);
                                    }
                                }
                            }
                            else
                            {
                                Console.Clear();
                                Console.WriteLine("Não há veículos disponíveis");
                            }
                        }
                        else
                        {
                            Console.Clear();
                            Console.WriteLine("Não existe uma garagem com o ID informado!");
                        }
                    }
                    else
                    {
                        Console.WriteLine("Não é possível entrar na fila enquanto a jornada não estiver ativa!");
                    }
                    Console.ReadKey();
                    break;
                    #endregion
                }
            } while (opc != 0);
        }