コード例 #1
0
        // Busca pessoa pelo nome ou sobrenome
        public static void BuscarPessoasPeloNome(Agenda agenda)  
        {
            int idade;

            Console.WriteLine("\nDigite o nome, ou sobrenome, da pessoa que deseja pesquisar: "); 
            string nome = Console.ReadLine();
            Console.WriteLine("\n\n");

            List<Pessoa> pessoa = agenda.BuscarPessoasPeloNome(nome);

            int pessoasEncontradas = 0;
            for (int i=0;i<pessoa.Count;i++)
            {
                pessoasEncontradas++;
            }

            if (pessoa == null)
            {
                Console.WriteLine("Pessoa não encontrada!");
                return;
            }
            else
            {

                Console.WriteLine(pessoasEncontradas+" Pessoas encontradas: \n\n");

                for (int i = 0; i < pessoa.Count; i++)
                {                                       

                    // Imprime a idade e a quantidade de dias para o próximo aniversário 
                    DateTime dataNascimento = pessoa[i].DataNascimento;
                    DateTime hoje = new DateTime(DateTime.Now.Date.Year, DateTime.Now.Date.Month, DateTime.Now.Date.Day);
                    DateTime proximoAniversario = new DateTime(DateTime.Now.Date.Year, dataNascimento.Month, dataNascimento.Day); //.Date elimina a hora
                    TimeSpan diasParaAniversario = proximoAniversario - hoje;

                    if (dataNascimento.Date.Day == DateTime.Now.Date.Day && dataNascimento.Date.Month == DateTime.Now.Date.Month) //Aniversariante do dia
                    {
                        Console.WriteLine();
                        idade = DateTime.Today.Year - dataNascimento.Year;
                        Console.WriteLine("\t\t***********************************************************\n");
                        Console.WriteLine("\t\t" + (i + 1) + " ª Pessoa:\n");
                        Console.WriteLine("\t\tAniversariante do dia!!!\n");
                        Console.WriteLine("\t\tNome:  " + pessoa[i].Nome + " " + pessoa[i].Sobrenome);
                        Console.WriteLine("\t\tData de nascimento:  " + pessoa[i].DataNascimento.ToShortDateString());
                        Console.WriteLine("\t\t" + pessoa[i].Nome + " " + pessoa[i].Sobrenome + " completou hoje " + idade + " anos.\n");
                        Console.WriteLine("\t\tId: " + pessoa[i].IdPessoa + "\n");
                        Console.WriteLine("\t\t************************************************************");
                        Console.WriteLine("\n\n");
                    }
                    else if (diasParaAniversario.Days < 0) //Caso a data já tenha ocorrido (correção de quantidade negativa)
                    {
                        Console.WriteLine();
                        Console.WriteLine((i + 1) + "ª Pessoa: ");
                        Console.WriteLine("Id: " + pessoa[i].IdPessoa);
                        Console.WriteLine("Nome:  \t  " + pessoa[i].Nome + " " + pessoa[i].Sobrenome);
                        Console.WriteLine("Data de Nascimento:  " + pessoa[i].DataNascimento.ToShortDateString());
                        DateTime proximo = new DateTime(DateTime.Now.Date.Year+1, dataNascimento.Month, dataNascimento.Day); // Adiciona 1 ano para o aniversario que já ocorreu
                        TimeSpan dias = proximo - hoje;
                        Console.WriteLine("Faltam " + dias.Days + " dias para o próximo aniversário. Caso 1");
                        idade = DateTime.Today.Year - dataNascimento.Year;
                        Console.WriteLine(pessoa[i].Nome + " " + pessoa[i].Sobrenome + " tem " + idade + " anos.");
                    }
                    else //Todos os demais casos
                    {
                        Console.WriteLine();
                        Console.WriteLine((i + 1) + "ª Pessoa: ");
                        Console.WriteLine("Id: " + pessoa[i].IdPessoa);
                        Console.WriteLine("Nome:  \t  " + pessoa[i].Nome + " " + pessoa[i].Sobrenome);
                        Console.WriteLine("Data de Nascimento:  " + pessoa[i].DataNascimento.ToShortDateString());
                        Console.WriteLine("Faltam " + diasParaAniversario.Days + " dias para o próximo aniversário. Caso 2");
                        idade = DateTime.Today.Year - dataNascimento.Year - 1; // Ainda não fez aniversário, não completou a idade no presente ano
                        Console.WriteLine(pessoa[i].Nome + " " + pessoa[i].Sobrenome + " tem " + idade + " anos.");
                    }
                }              

                Console.ReadLine();
            }
            Console.Clear();
        }