protected void btnCadastrar_Click(object sender, EventArgs e)
        {
            /*
             * Obj
             * */
            Funcionario obj = new Funcionario();
            obj.Id_endereco = Convert.ToInt32(dlEndereco.SelectedValue);
            obj.Id_condominio = Convert.ToInt32(dlCondominio.SelectedValue);
            obj.Nome = Convert.ToString(txNome.Text);
            obj.Cpf = txCPF.Text;
            obj.Rg = txRg.Text;

            if (txId.Text.Equals(""))
            {
                obj.Id = obj.NextId();
                obj.Adicionar();
            }
            else
            {
                obj.Id = Convert.ToInt32(txId.Text);
                obj.Editar();
            }

            this.redirecionarMesmaPagina();
        }
        public bool Editar(Funcionario funcionario)
        {
            StringBuilder builder = new StringBuilder();
            builder.Append("UPDATE ");
            builder.Append(this.TableName + " ");
            builder.Append("SET ");

            builder.Append("id_endereco = ");
            builder.Append(funcionario.Id_endereco + ", ");

            builder.Append("id_condominio = ");
            builder.Append(funcionario.Id_condominio + ", ");

            builder.Append("nome = ");
            builder.Append("'" + funcionario.Nome + "', ");

            builder.Append("cpf = ");
            builder.Append("'" + funcionario.Cpf + "', ");

            builder.Append("rg = ");
            builder.Append("'" + funcionario.Rg + "' ");
            
            builder.Append("WHERE ");
            builder.Append("id = " + funcionario.Id);
            builder.Append(";");

            return this.Update(builder.ToString());
        }
        public bool Adicionar(Funcionario funcionario)
        {
            StringBuilder builder = new StringBuilder();
            builder.Append("INSERT INTO ");
            builder.Append(this.TableName + " ");

            builder.Append("( ");

            builder.Append("id, ");
            builder.Append("id_endereco, ");
            builder.Append("id_condominio, ");
            builder.Append("nome, ");
            builder.Append("cpf, ");
            builder.Append("rg ");

            builder.Append(") ");

            builder.Append("VALUES ");

            builder.Append("(");

            builder.Append(funcionario.Id + ", ");
            builder.Append(funcionario.Id_endereco + ", ");
            builder.Append(funcionario.Id_condominio + ", ");
            builder.Append("'" + funcionario.Nome + "', ");
            builder.Append("'" + funcionario.Cpf + "', ");
            builder.Append("'" + funcionario.Rg + "' ");

            builder.Append(");");

            return this.Update(builder.ToString());
        }
 protected void DeleteRowButton_Click(Object sender, GridViewDeleteEventArgs e)
 {
     TableCell cell = gridView1.Rows[e.RowIndex].Cells[1];
     int id = Convert.ToInt32(cell.Text);
     Funcionario funcionario = new Funcionario();
     funcionario.Id = id;
     funcionario.Excluir();
     this.redirecionarMesmaPagina();
 }
        protected void EditRowButton_Click(Object sender, GridViewEditEventArgs e)
        {
            TableCell cell = gridView1.Rows[e.NewEditIndex].Cells[1];
            int id = Convert.ToInt32(cell.Text);

            Funcionario e1 = new Funcionario();
            e1.Id = id;
            Funcionario funcionario = e1.GetPorId(e1.Id);

            txId.Text = Convert.ToString(funcionario.Id);
            txIdEndereco.Text = Convert.ToString(funcionario.Id_endereco);
            txIdCondominio.Text = Convert.ToString(funcionario.Id_condominio);
            txNome.Text = funcionario.Nome;
            txCPF.Text = funcionario.Cpf;
            txRg.Text = funcionario.Rg;
        }
        public Funcionario GetPorId(int id)
        {
            NpgsqlDataReader dataReader = base.GetPorId(id);
            Funcionario funcionario = new Funcionario();

            if (dataReader.HasRows && dataReader.Read())
            {
                funcionario.Id = (int)dataReader[0];
                funcionario.Id_endereco = (int)dataReader[1];
                funcionario.Id_condominio = (int)dataReader[2];
                funcionario.Nome = (String)dataReader[3];
                funcionario.Cpf = (String)dataReader[4];
                funcionario.Rg = (String)dataReader[5];
            }

            return funcionario;
        }
        public Funcionario GetPorId(int id)
        {
            NpgsqlDataReader dataReader = base.GetPorId(id);
            Funcionario obj = new Funcionario();

            if (dataReader.HasRows && dataReader.Read())
            {
                obj = this.PreencherObjeto(dataReader);
            }

            /*
             * Fechando
             * */
            dataReader.Close();
            this.CloseCon();

            return obj;
        }
        protected void btnCadastrar_Click(object sender, EventArgs e)
        {
            Funcionario funcionario = new Funcionario();
            
            funcionario.Id_endereco = Convert.ToInt32(txIdEndereco.Text);
            funcionario.Id_condominio = Convert.ToInt32(txIdCondominio.Text);
            funcionario.Nome = txNome.Text;
            funcionario.Cpf = txCPF.Text;
            funcionario.Rg = txRg.Text;

            if(txId.Text.Equals("")) {
                funcionario.Id = listFuncionario.Count + 1;
                funcionario.Adicionar();
            }
            else
            {
                funcionario.Id = Convert.ToInt32(txId.Text);
                funcionario.Editar();
            }
            
            this.redirecionarMesmaPagina();
        }
        public void ExclusaoFuncionario()
        {
            Funcionario funcionario = new Funcionario();
            funcionario.Id = 1;

            Assert.IsTrue(funcionario.Excluir());
        }
        public void ListarFuncionario()
        {
            List<Funcionario> listFuncionario = new Funcionario().GetTodos();

            Assert.IsTrue(listFuncionario.Count == 1);
        }
        public void BuscaFuncionarioPorId()
        {
            Funcionario funcionario = new Funcionario().GetPorId(1);

            Assert.AreEqual("12234", funcionario.Rg);
        }
        public void EditarFuncionario()
        {
            Funcionario funcionario = new Funcionario();
            funcionario.Id = 1;
            funcionario.Id_condominio = 1;
            funcionario.Id_endereco = 1;
            funcionario.Nome = "Jurêmo dos Santos";
            funcionario.Rg = "12234";
            funcionario.Cpf = "45556";

            Assert.IsTrue(funcionario.Editar());
        }
        public void AdicaoFuncionario()
        {
            Funcionario funcionario = new Funcionario();
            funcionario.Id = 1;
            funcionario.Id_condominio = 1;
            funcionario.Id_endereco = 1;
            funcionario.Nome = "Jurandir da Silva Sauro";
            funcionario.Rg = "1212121";
            funcionario.Cpf = "12312313";

            Assert.IsTrue(funcionario.Adicionar());
        }
        protected void EditRowButton_Click(Object sender, GridViewEditEventArgs e)
        {
            TableCell cell = gridView1.Rows[e.NewEditIndex].Cells[1];
            int id = Convert.ToInt32(cell.Text);

            /*
             * Obj
             * */
            Funcionario obj = new Funcionario().GetPorId(id);
            txId.Text = Convert.ToString(obj.Id);
            dlEndereco.DataValueField = Convert.ToString(obj.Id_endereco);
            txNome.Text = Convert.ToString(obj.Nome);
            txNome.Text = obj.Nome;
            txCPF.Text = obj.Cpf;
            txRg.Text = obj.Rg;
        }
        public List<Funcionario> GetTodos()
        {
            List<Funcionario> listFuncionario = new List<Funcionario>();

            NpgsqlDataReader dataReader = base.GetTodos();
            if (dataReader.HasRows)
            {
                while (dataReader.Read())
                {
                    Funcionario funcionario = new Funcionario();
                    funcionario.Id = (int)dataReader[0];
                    funcionario.Id_endereco = (int)dataReader[1];
                    funcionario.Id_condominio = (int)dataReader[2];
                    funcionario.Nome = (String)dataReader[3];
                    funcionario.Cpf = (String)dataReader[4];
                    funcionario.Rg = (String)dataReader[5];

                    listFuncionario.Add(funcionario);
                } 
            }

            return listFuncionario;
        }
        private Funcionario PreencherObjeto(NpgsqlDataReader dataReader)
        {
            int i = 0;
            Funcionario obj = new Funcionario();
            obj.Id = dataReader.GetInt32(i++);
            obj.Id_endereco = dataReader.GetInt32(i++);
            obj.Id_condominio = dataReader.GetInt32(i++);
            obj.Nome = dataReader.GetString(i++);
            obj.Cpf = dataReader.GetString(i++);
            obj.Rg = dataReader.GetString(i++);

            return obj;
        }