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