public List <Pessoa> FindAll()
        {
            AbrirConexao();

            string queryConsulta = "SELECT * FROM PESSOA p LEFT JOIN ENDERECO e ON p.PessoaId = e.PessoaId";

            cmd = new SqlCommand(queryConsulta, con);
            dr  = cmd.ExecuteReader();

            List <Pessoa> listaPessoa = null;

            if (dr.HasRows)
            {
                listaPessoa = new List <Pessoa>();
                //varrer cada registro obtido na consulta...
                while (dr.Read())
                {
                    Pessoa p = new Pessoa();
                    p.PessoaId = Convert.ToInt32(dr["PessoaId"]);
                    p.AddNome(Convert.ToString(dr["Nome"]));
                    p.AddEmail(Convert.ToString(dr["Email"]));
                    p.AddDataCadastro(Convert.ToDateTime(dr["DataCadastro"]));

                    //verificar se pessoa contem endereço...
                    if (dr["EnderecoId"] != DBNull.Value)
                    {
                        p.Endereco            = new Endereco();
                        p.Endereco.EnderecoId = Convert.ToInt32(dr["EnderecoId"]);
                        p.Endereco.AddLogradouro(Convert.ToString(dr["Logradouro"]));
                        p.Endereco.AddCidade(Convert.ToString(dr["Cidade"]));
                        p.Endereco.AddEstado(Convert.ToString(dr["Estado"]));
                        p.Endereco.AddCEP(Convert.ToString(dr["Cep"]));
                    }
                    listaPessoa.Add(p);
                }
            }

            FecharConexao();
            return(listaPessoa);
        }
        public Pessoa FindById(int idPessoa)
        {
            AbrirConexao();

            string queryConsulta = "SELECT * FROM PESSOA p LEFT JOIN ENDERECO e ON p.PessoaId = e.PessoaId "
                                   + "WHERE p.PessoaId = @PessoaId";

            cmd = new SqlCommand(queryConsulta, con);
            cmd.Parameters.AddWithValue("@PessoaId", idPessoa);
            dr = cmd.ExecuteReader();

            Pessoa p = null;

            if (dr.HasRows)
            {
                p = new Pessoa();

                if (dr.Read())
                {
                    p.PessoaId = Convert.ToInt32(dr["PessoaId"]);
                    p.AddNome(Convert.ToString(dr["Nome"]));
                    p.AddEmail(Convert.ToString(dr["Email"]));
                    p.AddDataCadastro(Convert.ToDateTime(dr["DataCadastro"]));

                    //verificar se pessoa contem endereço...
                    if (dr["EnderecoId"] != DBNull.Value)
                    {
                        p.Endereco            = new Endereco();
                        p.Endereco.EnderecoId = Convert.ToInt32(dr["EnderecoId"]);
                        p.Endereco.AddLogradouro(Convert.ToString(dr["Logradouro"]));
                        p.Endereco.AddCidade(Convert.ToString(dr["Cidade"]));
                        p.Endereco.AddEstado(Convert.ToString(dr["Estado"]));
                        p.Endereco.AddCEP(Convert.ToString(dr["Cep"]));
                    }
                }
            }

            FecharConexao();
            return(p);
        }
        public void Cadastrar()
        {
            try
            {
                Console.WriteLine("\n - CADASTRO DE PESSOA - \n");
                Pessoa p = new Pessoa();

                Console.Write("INFORME O NOME.......: ");
                p.AddNome(Console.ReadLine());

                Console.Write("INFORME O EMAIL......: ");
                p.AddEmail(Console.ReadLine());

                p.AddDataCadastro(DateTime.Now);

                Endereco e = new Endereco();

                Console.Write("INFORME O LOGRADOURO.: ");
                e.AddLogradouro(Console.ReadLine());

                Console.Write("INFORME A CIDADE.....: ");
                e.AddCidade(Console.ReadLine());

                Console.Write("INFORME O ESTADO.....: ");
                e.AddEstado(Console.ReadLine());

                Console.Write("INFORME O CEP........: ");
                e.AddCEP(Console.ReadLine());

                repository.Insert(p, e);

                Console.WriteLine($"\n Pessoa {p.Nome} | cadastrado com sucesso !\n");
            }
            catch (Exception ex)
            {
                //imprimir mensagem de erro...
                Console.WriteLine("ERRO: " + ex.Message);
            }
        }