Example #1
0
        static void Main(string[] args)
        {
            Endereco        e        = new Endereco();
            Cores           cores    = new Cores();
            List <string>   endereco = new List <string>();   // INSTANCIAÇÃO DA LIST PARA CHAMAR O METODO DE POPULAR A BASE
            List <Endereco> Zipcode  = new List <Endereco>(); // INSTANCIAÇÃO DA LISTA DE ENDEREÇOS COMO NOME GENERICO "ZIP CODE"

            e.PopularaBase(endereco);                         // METODO CRIADO PARA PREENCHER A LISTA COM OS 50 CEP'S
            int    contagem = 0;
            int    decisao;
            string decisaotwo;


            Console.WriteLine();
            Console.WriteLine("O PROGRAMA ESTA CONSULTANDO OS CEPS EXISTENTES NESTE PROGRAMA...");
            Console.WriteLine();


            foreach (var zipcode in endereco) // PARA CADA ITEM EM ENDEREÇOS (METODO POPULAR BASE) FAÇA vv
            {
                try
                {
                    // FAZENDO A REQUISIÇÃO A API
                    var requisicaoWeb = WebRequest.CreateHttp($"https://viacep.com.br/ws/{zipcode}/json");
                    requisicaoWeb.Method    = "GET";
                    requisicaoWeb.UserAgent = "RequisicaoWebDemo";

                    // VARIAVEL RESPOSTA RECEBENDO REQUISIÇÃO
                    using (var resposta = requisicaoWeb.GetResponse())
                    {
                        var          streamDados = resposta.GetResponseStream();
                        StreamReader reader      = new StreamReader(streamDados);
                        object       objResponse = reader.ReadToEnd();
                        var          local       = JsonConvert.DeserializeObject <Endereco>(objResponse.ToString());
                        //VARIAVEL LOCAL RECEBENDO A DESERIALIZAÇÃO DO OBJ QUE RECEBE UMA LISTA DE ENDEREÇOS
                        Zipcode.Add(local);
                        contagem++;
                    }
                    // DENTRO DA LISTA ENDEREÇO SE CONTEM UF = ORDER BY UF, E TAMBEM PELA DATA DE CONSULTA DENTRO DA LIST
                    Zipcode = Zipcode.OrderBy(x => x.Uf).ThenBy(x => x.datadeConsulta).ToList();
                    string       path = @"C:\Users\Treinamento 4\Documents\consultaCep/consultaceps.txt";
                    StreamWriter sw2  = new StreamWriter(path);
                    string       g2   = JsonConvert.SerializeObject(Zipcode);
                    sw2.WriteLine(g2);
                    sw2.Close();
                }
                catch (WebException f)
                {
                    Console.WriteLine(f.Message);
                }
            }

            // exibindo quantidade de ceps registrados

            Console.WriteLine($"FORAM REGISTRADOS UM TOTAL DE: {endereco.Count} CEP'S");
            cores.MudarCores();

            Console.WriteLine("");

            // pedindo a quantidade de registros que o usuario quer ver por paginas

            Console.WriteLine("QUANTOS REGISTROS POR PAGINA VOCÊ DESEJA CONSULTAR? ");
            int registrosDesejados = int.Parse(Console.ReadLine());

            // definindo as paginas 50 ceps registrados / pela quantidade de registros
            // que a pessoa deseja ter por pagina
            //           VV
            int paginacao = 50 / registrosDesejados;

            // caso a divisao entre 50 e a qtd de registros seja um numero impar add 1 pagina
            //para que seja exibida nela o restante da consulta por exemplo:
            // 50
            if (50 % registrosDesejados != 0)
            {
                paginacao = paginacao + 1;
            }

            #region paginacao
            do
            {
                for (int i = 1; i <= paginacao; i++)
                {
                    Console.WriteLine();
                    //Console.WriteLine($"DIGITE {i} PARA VISUALIZAR A PAGINA {i}");

                    Console.WriteLine($"╔═════════════════════════════════════════╗");
                    Console.WriteLine($"║ DIGITE {i} PARA VISUALIZAR A PAGINA {i}     ║");
                    Console.WriteLine($"╚═════════════════════════════════════════╝");
                }

                Int32.TryParse(Console.ReadLine(), out decisao);

                if (decisao <= 0 || decisao > paginacao)
                {
                    Console.WriteLine();
                    Console.WriteLine("   !!! A PAGINA DIGITADA NÃO EXISTE NO CONTEXTO ATUAL !!! ");
                    Console.WriteLine("═══════════════════════════════════════════════════════════════");

                    Console.WriteLine();
                }
                #endregion


                // LOGICA CORTES PAGINACAO
                else
                {
                    var result = Zipcode.Skip((decisao - 1) * registrosDesejados).Take(registrosDesejados);

                    foreach (var zip in result)
                    {
                        Console.WriteLine($"CEP: {zip.Cep} | LOGRADOURO: {zip.Logradouro} | BAIRRO: {zip.Bairro} | UF: {zip.Uf} | HORARIO DE CONSULTA DO CEP: {zip.datadeConsulta}");
                        Console.WriteLine("");
                    }
                }
                Console.WriteLine($" ╔═════════════════════════════════════════════════════╗");
                Console.WriteLine($" ║DESEJA VISUALIZAR OUTRA PAGINA/CONTINUAR NO PROGRAMA?║");
                Console.WriteLine($" ║           DIGITE ( SIM ) OU ( NÃO )                 ║");
                Console.WriteLine($" ╚═════════════════════════════════════════════════════╝");
                decisaotwo = Console.ReadLine().ToUpper();
            } while (decisaotwo == "SIM");
        }