Back-End

5 dez, 2014

C# – Login com Fluent NHibernate, NHibernate 4.0 e PostGreSql – Parte 03

Publicidade

Esta é a versão C# do artigo que mostra 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ário de login e registro e implementamos as funcionalidades de login do usuário e registro de um novo usuário. Agora vamos continuar criando o formulário de manutenção de usuário, 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 controles 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:

vb_lpgnh31 (1)

Esse formulário será chamado a partir do formulário frmMenu no evento Click do botão Área Segura:

c_lpgnhc (2)

O código para abrir o formulário frmManutencao é visto a seguir:

private void btnAdmin_Click(object sender, EventArgs e)
 {
     frmManutencao frmManu = new frmManutencao();
     frmManu.Show();
 }

1. Localizando Uuários

No código do formulário vamos primeiro incluir uma declaração para referenciar o projeto Repositório e a pasta Entidades:

using Repositorio;
using Repositorio.Entidades;

A seguir, no evento Click do botão Localizar, digite o código abaixo:

rivate void btnLocalizar_Click(object sender, EventArgs e)
   {
            errorProvider1.Clear();
            if (txtNome.Text == string.Empty)
            {
                errorProvider1.SetError(txtNome, "Informe o nome do usuário");
                return;
            }
            try
            {
                UsuarioRepositorio usuarioRepo = new UsuarioRepositorio();
                Usuario _usuario = new Usuario();
                _usuario = usuarioRepo.LocalizarPorNome(txtNome.Text);
                if ((_usuario == null))
                {
                    MessageBox.Show("Usuário não localizado", "Erro", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                }
                else
                {
                    txtID.Text = _usuario.Id.ToString();
                    txtLogin.Text = _usuario.Login;
                    txtSenha.Text = _usuario.Senha;
                    cboStatus.Text = _usuario.Status.ToString();
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show("Erro ao cadastrar " + ex.Message, "Erro", MessageBoxButtons.OK, MessageBoxIcon.Warning);
            }
  }

Este código, após realizar a validação da caixa de texto : txtNome, crie 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 Usuario LocalizarPorNome(string nome)
 {
     try {
          using (ISession session = SessionFactory.AbrirSession()) 
          {
  	 return (from e in session.Query<Usuario>()where e.Nome.Like(nome) select e).FirstOrDefault();
          }
       } 
      catch (Exception ex) 
      {
          throw ex;
      }
 }

2.Alterar usuários

No evento Click do botão Alterar, digite o código abaixo:

private void btnEditar_Click(object sender, EventArgs e)
  {
            errorProvider1.Clear();
            if (txtNome.Text == string.Empty)
            {
                errorProvider1.SetError(txtNome, "Informe o nome do usuário");
                return;
            }
            if (txtLogin.Text == string.Empty)
            {
                errorProvider1.SetError(txtLogin, "Informe o login do usuário");
                return;
            }
            if (txtSenha.Text == string.Empty)
            {
                errorProvider1.SetError(txtSenha, "Informe a senha do usuário");
                return;
            }
            try
            {
                UsuarioRepositorio usuarioRepo = new UsuarioRepositorio();
                Usuario _usuario = new Usuario();
                int codigo = Convert.ToInt32(txtID.Text);
                _usuario.Nome = txtNome.Text;
                _usuario.Login = txtLogin.Text;
                _usuario.Senha = txtSenha.Text;
                _usuario.Status = Convert.ToChar(cboStatus.Text);
                _usuario.Id = codigo;
                usuarioRepo.Alterar(_usuario);
                MessageBox.Show("Usuário alterado com sucesso", "Erro", MessageBoxButtons.OK, MessageBoxIcon.Warning);
            }
            catch (Exception ex)
            {
                MessageBox.Show("Erro ao alterar o usuário " + ex.Message, "Erro", MessageBoxButtons.OK, MessageBoxIcon.Warning);
            }
  }

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.

A seguir, 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 void btnExcluir_Click(object sender, EventArgs e)
 {
            try
            {
                UsuarioRepositorio usuarioRepo = new UsuarioRepositorio();
                Usuario _usuario = new Usuario();
                int codigo = Convert.ToInt32(txtID.Text);
                _usuario = usuarioRepo.RetornarPorId(codigo);
                usuarioRepo.Excluir(_usuario);
                MessageBox.Show("Usuario excluido com sucesso", "OK", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            catch (Exception ex)
            {
                MessageBox.Show("Erro ao excluir o usuário " + ex.Message, "Erro", MessageBoxButtons.OK, MessageBoxIcon.Warning);
            }
 }

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:

vb_lpgnh32 (1)

Pegue o projeto completo aqui: ControleUsuariosFinalCSharp.zip (sem as referências).