Neste artigo vamos continuar a mostrar como usar o Fluent NHibernate e o NHibernate 4.0 para criar uma aplicação que realiza o login e faz o registro de um novo usuário no banco de dados PostgreSQL, mostrando também como realizar as operações CRUD de manutenção dos usuários usando o padrão Repository.
Na segunda parte deste artigo, criamos os formulários de login e de registro e implementamos as funcionalidades de login do usuário e de registro de um novo usuário. Agora vamos criar o formulário de manutenção de usuários, onde iremos implementar a localização, alteração e exclusão de usuários.
Abra o projeto ControleUsuarios no Visual Studio 2013 for Windows desktop e, a seguir, clique no menu PROJECT e selecione Add Windows Forms.
Informe o nome frmManutencao e clique no botão Add.
A seguir, a partir da ToolBox, inclua os seguintes controle no formulário frmManutencao:
- 1 GroupBox – Text =Manutenção de Usuário
- 5 Label
- 4 TextBoxes – txtId, txtNome, txtLogin, txtSenha
- 1 Combobox – cboStatus
- 1 ErrorProvider
- 4 Buttons – btnLocalizar, btnAlterar, btnExcluir e btnSair
Disponha os controles conforme o leiaute da figura abaixo:
Esse formulário será chamado a partir do formulário frmMenu no evento Click do botão Área Segura:
O código para abrir o formulário frmManutencao é visto a seguir:
Private Sub btnAdmin_Click(sender As Object, e As EventArgs) Handles btnAdmin.Click My.Forms.frmManutencao.Show() End Sub
1. Localizando usuários
No código do formulário vamos primeiro incluir uma declaração para referenciar o projeto Repositório:
Imports Repositorio
A seguir, no evento Click do botão Localizar, digite o código abaixo:
Private Sub btnLocalizar_Click(sender As Object, e As EventArgs) Handles btnLocalizar.Click ErrorProvider1.Clear() If txtNome.Text = String.Empty Then ErrorProvider1.SetError(txtNome, "Informe o nome do usuário") Return End If Try Dim usuarioRepo As New UsuarioRepositorio Dim _usuario As New Usuario _usuario = usuarioRepo.LocalizarPorNome(txtNome.Text) If IsNothing(_usuario) Then MessageBox.Show("Usuário não localizado", "Erro", MessageBoxButtons.OK, MessageBoxIcon.Warning) Else txtID.Text = _usuario.Id txtLogin.Text = _usuario.Login txtSenha.Text = _usuario.Senha cboStatus.Text = _usuario.Status End If Catch ex As Exception MessageBox.Show("Erro ao cadastrar " & ex.Message, "Erro", MessageBoxButtons.OK, MessageBoxIcon.Warning) End Try End Sub
Este código, após realizar a validação da caixa de texto : txtNome, cria uma instância da classe UsuarioRepositorio e da classe Usuário.
A seguir, usamos o método LocalizarPorNome() da classe UsuarioRepositorio para localizar o usuário pelo seu nome. Se o usuário for localizado, então, atribuímos os valores às caixas de texto.
Nota: O código do método LocalizarPorNome() deverá ser incluído na classe UsuarioRepositorio, conforme o código abaixo:
Public Function LocalizarPorNome(nome As String) As Usuario Try Using session As ISession = SessionFactory.AbrirSession() Return (From e In session.Query(Of Usuario)() Where e.Nome.Like(nome) Select e).FirstOrDefault End Using Catch ex As Exception Throw ex End Try End Function
2. Alterar Usuários
No evento Click do botão Alterar, digite o código abaixo:
Private Sub btnEditar_Click(sender As Object, e As EventArgs) Handles btnEditar.Click ErrorProvider1.Clear() If txtNome.Text = String.Empty Then ErrorProvider1.SetError(txtNome, "Informe o nome do usuário") Return End If If txtLogin.Text = String.Empty Then ErrorProvider1.SetError(txtLogin, "Informe o login do usuário") Return End If If txtSenha.Text = String.Empty Then ErrorProvider1.SetError(txtSenha, "Informe a senha do usuário") Return End If Try Dim usuarioRepo As New UsuarioRepositorio Dim _usuario As New Usuario Dim codigo As Integer = Convert.ToInt32(txtID.Text) _usuario.Nome = txtNome.Text _usuario.Login = txtLogin.Text _usuario.Senha = txtSenha.Text _usuario.Status = cboStatus.Text _usuario.Id = codigo usuarioRepo.Alterar(_usuario) MessageBox.Show("Usuário alterado com sucesso", "Erro", MessageBoxButtons.OK, MessageBoxIcon.Warning) Catch ex As Exception MessageBox.Show("Erro ao alterar o usuário " & ex.Message, "Erro", MessageBoxButtons.OK, MessageBoxIcon.Warning) End Try End Sub
Este código, após realizar as validações das caixas de texto : txtNome, txtLogin e txtSenha, cria uma instância da classe UsuarioRepositorio e da classe Usuário. Em seguida atribui os valores digitados nas caixas de texto aos valores das propriedades do objeto _usuario e usa o método Alterar() do Repositório para alterar o usuário.
3. Excluir Usuários
No evento Click do botão Excluir, digite o código abaixo:
Private Sub btnExcluir_Click(sender As Object, e As EventArgs) Handles btnExcluir.Click Try Dim usuarioRepo As New UsuarioRepositorio Dim _usuario As New Usuario Dim codigo As Integer = Convert.ToInt32(txtID.Text) _usuario = usuarioRepo.BuscarPorId(codigo) usuarioRepo.Excluir(_usuario) MessageBox.Show("Usuario excluido com sucesso", "OK", MessageBoxButtons.OK, MessageBoxIcon.Information) Catch ex As Exception MessageBox.Show("Erro ao excluir o usuário " & ex.Message, "Erro", MessageBoxButtons.OK, MessageBoxIcon.Warning) End Try End Sub
Este código cria uma instância da classe UsuarioRepositorio e da classe Usuário e obtém o valor do Id da caixa de texto txtId atribuindo-a à variável código.
A seguir, usando o objeto usuarioRepo, usamos o método BuscarPorId(), passando o código obtido para localizar o usuário. Depois usamos o método Excluir da classe UsuarioRepositorio para excluir o usuário.
Executando o projeto teremos:
Concluímos, assim, nosso projeto usando o NHibernate e os recursos do Visual Studio.
Pegue o projeto completo aqui: ControleUsuariosFinalVBNET.zip (sem as referências).