Back-End

17 mar, 2015

EF 6 – Criando a camada de apresentação (UI) – Parte 07

Publicidade

Neste artigo vamos concluir o nosso exemplo de aplicação em camadas com Entity Framework e o padrão repositório, implementando o código para a manutenção de funcionários e de consultas.

No artigo anterior, criamos a camada de apresentação e iniciamos a implementação do código para a guia Departamentos. Vamos continuar a implementação para as demais guias do formulário.

1. Implementação das funcionalidades referente à guia Funcionários

No evento Click do botão carregar da guia Departamentos, vamos definir o código que irá carregar os funcionários cadastrados, exibindo-os no controle DataGridView – dgvFuncionarios:

private void btnCarregarFuncis_Click(object sender, EventArgs e)
  {
            empregadoBLL = new EmpregadoBLL();
            List<Empregado> emp = empregadoBLL.Get_EmpregadoInfo();
            dgvFuncionarios.DataSource = emp.ToList();
            formataGridViewFunci(dgvFuncionarios);
  }

No evento Click do botão Localizar, temos o código que irá localizar o funcionário pelo código, exibindo os seus dados nas caixas de texto do formulário:

 private void btnLocalizarFunci_Click(object sender, EventArgs e)
  {
            Empregado emp = new Empregado();
            EmpregadoBLL _empregadoBLL = new EmpregadoBLL();            
            int codigo = Convert.ToInt32(txtCodigoFunci.Text);
            emp = empregadoBLL.Localizar(codigo);
            txtNomeFunci.Text = emp.Nome;
            txtSobreNome.Text= emp.Sobrenome;
            txtEmail.Text = emp.Email;
            cboDepartamentoFunci.SelectedValue = emp.DepartamentoId;
  }

No evento Click do botão Incluir, temos o código que inclui um funcionário:

private void btnIncluirFunci_Click(object sender, EventArgs e)
  {
            try
            {
                Empregado emp = new Empregado();
                EmpregadoBLL _empregadoBLL = new EmpregadoBLL();
                emp.Nome = txtNomeFunci.Text;
                emp.Sobrenome = txtSobreNome.Text;
                emp.Email = txtEmail.Text;
                emp.DepartamentoId = Convert.ToInt32(cboDepartamentoFunci.SelectedValue);
                _empregadoBLL.AdicionarEmpregado(emp);
                MessageBox.Show("Empregado incluído com sucesso !", "Novo", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
 }

No evento Click do botão Excluir, temos o código que exclui um funcionário:

private void btnExcluirFunci_Click(object sender, EventArgs e)
 {
            try
            {
                Empregado emp = new Empregado();
                EmpregadoBLL _empregadoBLL = new EmpregadoBLL();
                int codigo = Convert.ToInt32(txtCodigoFunci.Text);
                emp = empregadoBLL.Localizar(codigo);
                empregadoBLL.ExcluirEmpregado(emp);
                MessageBox.Show("Empregado excluído com sucesso !", "Excluir", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
 }

No evento Click do botão Alterar, temos o código que altera um funcionário:

private void btnAlterarFunci_Click(object sender, EventArgs e)
 {
            try
            {
                Empregado emp = new Empregado();
                empregadoBLL = new EmpregadoBLL();
                int codigo = Convert.ToInt32(txtCodigoFunci.Text);
                //
                emp = empregadoBLL.Localizar(codigo);
                emp.Nome = txtNomeFunci.Text;
                emp.Sobrenome = txtSobreNome.Text;
                emp.Email = txtEmail.Text;
                emp.DepartamentoId = Convert.ToInt32(cboDepartamentoFunci.SelectedValue);
                //
                empregadoBLL.AlterarEmpregado(emp);
                MessageBox.Show("Empregado alterado com sucesso !", "Alterar", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
  }

No evento Click do botão Limpar, limpamos o combobox de departamentos e temos a chamada da rotina LimparTextBox(), que limpa os controles TextBox do formulário:

private void btnLimparFunci_Click(object sender, EventArgs e)
{
                LimparTextBox(this);
                cboDepartamentoFunci.Text = "";
}
 public void LimparTextBox(Control control)
 {
            foreach (Control c in control.Controls)
            {
                if (c is TextBox)
                {
                    ((TextBox)c).Clear();
                }
                if (c.HasChildren)
                {
                    LimparTextBox(c);
                }
            }
 }

A formatação do datagridview – dgvFunci – é feita pelo método formataGridViewFunci():

private void formataGridViewFunci(DataGridView gdvDados)
  {
            var gdvFunci = gdvDados;
            gdvFunci.AutoGenerateColumns = false;
            gdvFunci.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.DisplayedCellsExceptHeaders;
            gdvFunci.ColumnHeadersBorderStyle = DataGridViewHeaderBorderStyle.Single;
            //altera a cor das linhas alternadas no grid
            gdvFunci.RowsDefaultCellStyle.BackColor = System.Drawing.Color.White;
            gdvFunci.AlternatingRowsDefaultCellStyle.BackColor = System.Drawing.Color.Aquamarine;
            //altera o nome das colunas
            gdvFunci.Columns[0].HeaderText = "Emp.ID";
            gdvFunci.Columns[1].HeaderText = "Dep.ID";
            gdvFunci.Columns[2].HeaderText = "Nome";
            gdvFunci.Columns[3].HeaderText = "Sobrenome";
            gdvFunci.Columns[4].HeaderText = "Email";
            //
            gdvFunci.Columns[0].Width = 35;
            gdvFunci.Columns[1].Width = 50;
            gdvFunci.Columns[2].Width = 100;
            gdvFunci.Columns[3].Width = 100;
            gdvFunci.Columns[4].Width = 100;
            //esconde a coluna
            //gdvFunci.Columns[0].Visible = false;
            gdvFunci.Columns[5].Visible = false;
            //seleciona a linha inteira
            gdvFunci.SelectionMode = DataGridViewSelectionMode.FullRowSelect;
            //não permite seleção de multiplas linhas
            gdvFunci.MultiSelect = false;
            // exibe nulos formatados
            gdvFunci.DefaultCellStyle.NullValue = " - ";
            //permite que o texto maior que célula não seja truncado
            gdvFunci.DefaultCellStyle.WrapMode = DataGridViewTriState.True;
   }

No evento CellClick do datagridview dgvFuncionarios, temos o código que obtém os valores da linha selecionada e exibe-os nas caixas de texto do formulário:

private void dgvFuncionarios_CellClick(object sender, DataGridViewCellEventArgs e)
 {
            try
            {
                if (dgvFuncionarios.Rows[e.RowIndex].Cells[e.ColumnIndex].Value != null)
                {
                    txtCodigoFunci.Text = dgvFuncionarios.Rows[e.RowIndex].Cells[0].Value.ToString();
                    cboDepartamentoFunci.SelectedValue = Convert.ToInt32(dgvFuncionarios.Rows[e.RowIndex].Cells[1].Value.ToString());
                    txtNomeFunci.Text = dgvFuncionarios.Rows[e.RowIndex].Cells[2].Value.ToString();
                    txtSobreNome.Text = dgvFuncionarios.Rows[e.RowIndex].Cells[3].Value.ToString();
                    txtEmail.Text = dgvFuncionarios.Rows[e.RowIndex].Cells[4].Value.ToString();
                }
            }
            catch(Exception ex)
            {
            }
 }

2. Implementação das funcionalidades referente à guia Consultas

No evento Click do botão Processar, temos o código que localiza os funcionários de um departamento selecionado, exibindo-os no datagridviewdgvFunciDepartamento:

private void btnProcessar_Click(object sender, EventArgs e)
 {
            int codigoDepartamento = Convert.ToInt32(cboDepartamentos.SelectedValue);
            empregadoBLL = new EmpregadoBLL();
            dgvFunciDepartamento.DataSource = empregadoBLL.GetEmpregadosPorDepartamento(codigoDepartamento);
            formataGridViewFunci(dgvFunciDepartamento);
 }

A formatação do datagridView é feito pelo método formataGridViewFunci() já exibido anteriormente.

Dessa forma, já temos nossa camada de apresentação implementada com todas as suas funcionalidades, usando o Entity Framework 6 e o padrão repositório em um projeto em camadas.

Concluímos assim essa série de 7 artigos, onde foi mostrado como criar uma aplicação usando o Entity Framework e o padrão repositório para realizar as operações básicas de manutenção de dados.

Pegue o projeto completo aqui: RepositorioEF6.zip