Imports System.Configuration
Imports fatd_faturamento.BLL.Repositorio
Imports fatd_faturamento.ENTIDADE

Public Class frmCadastroUsuarios
    Private mItem As System.Windows.Forms.ListViewItem ' Objeto que controla a linha do listview
    Dim vCodigo As String
    Dim vResp As Short
    Dim vNew As Boolean
    Dim i As Integer

#Region "Propriedades"

    Private Sub frmCadastroUsuarios_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        Try

            lAtualizaList()
            PreencheCombobox()

            If vUsuario.TIPOACESSO = "Limitado" Then
                lHabilitaDesabilitaCampo(False)
                MessageBox.Show("Sua conta é limitada!" & vbCrLf & vbCrLf & "Você não pode efetuar alterações no cadastro de usuários.", "Aviso", MessageBoxButtons.OK, MessageBoxIcon.Information)
            Else
                lHabilitaDesabilitaCampo(True)
            End If

        Catch ex As Exception
            MessageBox.Show("Ocorreu um Erro Inesperado. Favor, Contate o Administrador do Sistema ou a Equipe de Suporte de sua localidade! ", "Fatal - Erro", MessageBoxButtons.OK, MessageBoxIcon.Error)
            Exit Sub
        End Try

    End Sub

    Private Sub txtNomeCompleto_GotFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles txtNomeCompleto.GotFocus

        Try

            Me.txtNomeCompleto.SelectAll()

        Catch ex As Exception
            MessageBox.Show("Ocorreu um Erro Inesperado. Favor, Contate o Administrador do Sistema ou a Equipe de Suporte de sua localidade! ", "Fatal - Erro", MessageBoxButtons.OK, MessageBoxIcon.Error)
            Exit Sub
        End Try

    End Sub

    Private Sub txtLogin_GotFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles txtLogin.GotFocus


        Try

            Me.txtLogin.SelectAll()

        Catch ex As Exception
            MessageBox.Show("Ocorreu um Erro Inesperado. Favor, Contate o Administrador do Sistema ou a Equipe de Suporte de sua localidade! ", "Fatal - Erro", MessageBoxButtons.OK, MessageBoxIcon.Error)
            Exit Sub
        End Try

    End Sub

    Private Sub txtSenha_GotFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles txtSenha.GotFocus


        Try

            Me.txtSenha.SelectAll()

        Catch ex As Exception
            MessageBox.Show("Ocorreu um Erro Inesperado. Favor, Contate o Administrador do Sistema ou a Equipe de Suporte de sua localidade! ", "Fatal - Erro", MessageBoxButtons.OK, MessageBoxIcon.Error)
            Exit Sub
        End Try

    End Sub

    Private Sub txtConfirmacaoSenha_GotFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles txtConfirmacaoSenha.GotFocus


        Try

            Me.txtConfirmacaoSenha.SelectAll()

        Catch ex As Exception
            MessageBox.Show("Ocorreu um Erro Inesperado. Favor, Contate o Administrador do Sistema ou a Equipe de Suporte de sua localidade! ", "Fatal - Erro", MessageBoxButtons.OK, MessageBoxIcon.Error)
            Exit Sub
        End Try

    End Sub

    Private Sub txtUltimoAcesso_GotFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles txtUltimoAcesso.GotFocus


        Try

            Me.txtUltimoAcesso.SelectAll()

        Catch ex As Exception
            MessageBox.Show("Ocorreu um Erro Inesperado. Favor, Contate o Administrador do Sistema ou a Equipe de Suporte de sua localidade! ", "Fatal - Erro", MessageBoxButtons.OK, MessageBoxIcon.Error)
            Exit Sub
        End Try

    End Sub

    Private Sub txtCodigo_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txtCodigo.KeyPress

        Try

            SomenteInteger(e.KeyChar, sender, False)


        Catch ex As Exception
            MessageBox.Show("Ocorreu um Erro Inesperado. Favor, Contate o Administrador do Sistema ou a Equipe de Suporte de sua localidade! ", "Fatal - Erro", MessageBoxButtons.OK, MessageBoxIcon.Error)
            Exit Sub
        End Try

    End Sub

    Private Sub txtCodigo_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles txtCodigo.KeyDown


        Try

            If e.KeyCode = Keys.Enter Then
                e.SuppressKeyPress = True

                If Me.txtCodigo.Text <> "" Then
                    SetaCodigo("usuarios", CInt(Me.txtCodigo.Text))
                End If
            End If

            If e.KeyCode = Keys.F3 Then

                frmLocalizadorGeral.SetParametros("usuarios", "Pesquisar Usuários", Me)
                frmLocalizadorGeral.Show()

            End If


        Catch ex As Exception
            MessageBox.Show("Ocorreu um Erro Inesperado. Favor, Contate o Administrador do Sistema ou a Equipe de Suporte de sua localidade! ", "Fatal - Erro", MessageBoxButtons.OK, MessageBoxIcon.Error)
            Exit Sub
        End Try

    End Sub

    Private Sub btFechar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btFechar.Click

        Try

            lClose()


        Catch ex As Exception
            MessageBox.Show("Ocorreu um Erro Inesperado. Favor, Contate o Administrador do Sistema ou a Equipe de Suporte de sua localidade! ", "Fatal - Erro", MessageBoxButtons.OK, MessageBoxIcon.Error)
            Exit Sub
        End Try

    End Sub

    Private Sub btNovo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btNovo.Click

        Try

            lNew()

        Catch ex As Exception
            MessageBox.Show("Ocorreu um Erro Inesperado. Favor, Contate o Administrador do Sistema ou a Equipe de Suporte de sua localidade! ", "Fatal - Erro", MessageBoxButtons.OK, MessageBoxIcon.Error)
            Exit Sub
        End Try

    End Sub

    Private Sub btSalvar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btSalvar.Click

        Dim objUsuario As New entidadeUsuario
        Dim repositorioUsuario As New repositorioUsuario

        Dim objRastreamento As New entidadeRastreamento
        Dim repositorioRastreamento As New repositorioRastreamento

        Dim objUsuarioEmpresa As New entidadeUsuarioEmpresa
        Dim repositorioUsuarioEmpresa As New repositorioUsuarioEmpresa

        Dim vlist

        Try

            '[Verifica se o nome completo do usuário foi digitado]
            If Me.txtNomeCompleto.Text.Trim = String.Empty Then
                MessageBox.Show("Por favor, digite o nome do usuário!", "Informação", MessageBoxButtons.OK, MessageBoxIcon.Information)
                Me.txtNomeCompleto.Select()
                Exit Sub
            End If

            '[Verifica se o login do usuário foi digitado]
            If Me.txtLogin.Text.Trim = String.Empty Then
                MessageBox.Show("Por favor, digite o login do usuário!", "Informação", MessageBoxButtons.OK, MessageBoxIcon.Information)
                Me.txtLogin.Select()
                Exit Sub
            End If

            '[Verifica se a senha do usuário foi digitada]
            If Me.txtSenha.Text.Trim = String.Empty Then
                MessageBox.Show("Por favor, digite a senha do usuário!", "Informação", MessageBoxButtons.OK, MessageBoxIcon.Information)
                Me.txtSenha.Select()
                Exit Sub
            End If

            '[Verifica se a confirmação de senha do usuário foi digitada]
            If Me.txtConfirmacaoSenha.Text.Trim = String.Empty Then
                MessageBox.Show("Por favor, digite a confirmação de senha do usuário!", "Informação", MessageBoxButtons.OK, MessageBoxIcon.Information)
                Me.txtConfirmacaoSenha.Select()
                Exit Sub
            End If

            '[Verifica se o perfil de acesso aos menus foi selecionado]
            If Me.cbPerfilMenu.SelectedIndex = 0 Then
                MessageBox.Show("Por favor, selecione o perfil de acesso aos menus do sistema!", "Informação", MessageBoxButtons.OK, MessageBoxIcon.Information)
                Me.cbPerfilMenu.Select()
                Exit Sub
            End If

            '[Verifica se a senha e a confirmação de senha digitadas são iguais]
            If Me.txtSenha.Text <> Me.txtConfirmacaoSenha.Text Then
                MessageBox.Show("A senha digitada é diferente da confirmação de senha." & vbCrLf & vbCrLf & "Por favor, tente novamente.", "Informação", MessageBoxButtons.OK, MessageBoxIcon.Information)
                Me.txtSenha.Text = String.Empty
                Me.txtConfirmacaoSenha.Text = String.Empty
                Me.txtSenha.Select()
                Exit Sub
            End If

            If vNew = True Then

                '[Se o Id estiver em branco, insere um novo usuário. Caso contrário, atualiza os dados do usuário selecionado]
                If Me.txtCodigoPrincipal.Text = String.Empty Then

                    '[Verifica se o login digitado já está cadastrado]
                    objUsuario.LOGIN = txtLogin.Text.ToUpper()

                    vlist = repositorioUsuario.Select(objUsuario)

                    If vlist.Count = 0 Then

                        If lInsert() Then


                            objUsuario.LOGIN = txtLogin.Text.ToUpper()

                            vlist = repositorioUsuario.Select(objUsuario)

                            If vlist.Count > 0 Then

                                For Each objUsuarioFor As entidadeUsuario In vlist
                                    Me.txtCodigo.Text = CStr(CInt(IIf(IsDBNull(objUsuarioFor.ID), 0, objUsuarioFor.ID)))
                                Next


                                '[Exclui todas as permissões para o usuário selecionado]
                                objUsuarioEmpresa.ID_USUARIO = CInt(Me.txtCodigo.Text)
                                objUsuarioEmpresa.ID_SISTEMA = vintIdSistema
                                repositorioUsuarioEmpresa.Delete(objUsuarioEmpresa)

                                '[Insere as novas permissões]
                                For cont As Integer = 0 To lvEmpresas.Items.Count - 1

                                    objUsuarioEmpresa.ID_USUARIO = CInt(Me.txtCodigo.Text)
                                    objUsuarioEmpresa.ID_SISTEMA = vintIdSistema
                                    objUsuarioEmpresa.EMPRESA = Me.lvEmpresas.Items.Item(cont).Text
                                    objUsuarioEmpresa.ID_PERMISSAO = CBool(Me.lvEmpresas.Items.Item(cont).Checked)

                                    '[Grava as permissões de acesso]
                                    repositorioUsuarioEmpresa.Insert(objUsuarioEmpresa)
                                Next

                                objRastreamento.DATA = DateTime.Now
                                objRastreamento.DESCRICAO = "Criou o usuário - " & txtLogin.Text.ToUpper()
                                objRastreamento.COD_USUARIO = vUsuario.ID
                                objRastreamento.LOGIN_USUARIO = vUsuario.LOGIN
                                objRastreamento.NOME_COMPUTADOR = My.Computer.Name
                                objRastreamento.MAC_ADDRESS = GetMacAddress()
                                objRastreamento.VERSAO = Application.ProductVersion


                                '[Grava rastreamento]
                                repositorioRastreamento.Insert(objRastreamento)

                                SetaCodigo("usuarios", CInt(Me.txtCodigo.Text))

                            End If

                            MessageBox.Show("Usuário criado com sucesso!", "Informação", MessageBoxButtons.OK, MessageBoxIcon.Information)


                        Else
                            MessageBox.Show("Usuário não pode ser criado!", "Informação", MessageBoxButtons.OK, MessageBoxIcon.Information)
                            Exit Sub
                        End If

                    Else
                        MessageBox.Show("O login digitado já existe." & vbCrLf & vbCrLf & "Por favor, selecione um login diferente.", "Informação", MessageBoxButtons.OK, MessageBoxIcon.Information)
                        Me.txtLogin.Select()
                        Me.txtLogin.SelectAll()
                        Exit Sub

                    End If

                End If

            Else

                If Me.txtCodigoPrincipal.Text <> String.Empty Then

                    If lUpdate() Then


                        objUsuario.LOGIN = txtLogin.Text.ToUpper()

                        vlist = repositorioUsuario.Select(objUsuario)

                        If vlist.Count > 0 Then

                            For Each objUsuarioFor As entidadeUsuario In vlist
                                Me.txtCodigo.Text = CStr(CInt(IIf(IsDBNull(objUsuarioFor.ID), 0, objUsuarioFor.ID)))
                            Next

                            '[Exclui todas as permissões para o usuário selecionado]
                            objUsuarioEmpresa.ID_USUARIO = CInt(Me.txtCodigo.Text)
                            objUsuarioEmpresa.ID_SISTEMA = vintIdSistema
                            repositorioUsuarioEmpresa.Delete(objUsuarioEmpresa)

                            '[Insere as novas permissões]
                            For cont As Integer = 0 To lvEmpresas.Items.Count - 1

                                objUsuarioEmpresa.ID_USUARIO = CInt(Me.txtCodigo.Text)
                                objUsuarioEmpresa.ID_SISTEMA = vintIdSistema
                                objUsuarioEmpresa.EMPRESA = Me.lvEmpresas.Items.Item(cont).Text
                                objUsuarioEmpresa.ID_PERMISSAO = CBool(Me.lvEmpresas.Items.Item(cont).Checked)

                                '[Grava as permissões de acesso]
                                repositorioUsuarioEmpresa.Insert(objUsuarioEmpresa)
                            Next


                            objRastreamento.DATA = DateTime.Now
                            objRastreamento.DESCRICAO = "Alterou o cadastro do usuário - " & txtLogin.Text.ToUpper()
                            objRastreamento.COD_USUARIO = vUsuario.ID
                            objRastreamento.LOGIN_USUARIO = vUsuario.LOGIN
                            objRastreamento.NOME_COMPUTADOR = My.Computer.Name
                            objRastreamento.MAC_ADDRESS = GetMacAddress()
                            objRastreamento.VERSAO = Application.ProductVersion


                            '[Grava rastreamento]
                            repositorioRastreamento.Insert(objRastreamento)

                            SetaCodigo("usuarios", CInt(Me.txtCodigo.Text))

                        End If

                        MessageBox.Show("Usuário atualizado com sucesso!", "Informação", MessageBoxButtons.OK, MessageBoxIcon.Information)


                    Else
                        MessageBox.Show("Usuário não pode ser atualizado!", "Informação", MessageBoxButtons.OK, MessageBoxIcon.Information)
                        Exit Sub
                    End If

                End If

            End If


        Catch ex As Exception
            MessageBox.Show("Ocorreu um Erro Inesperado. Favor, Contate o Administrador do Sistema ou a Equipe de Suporte de sua localidade! ", "Fatal - Erro", MessageBoxButtons.OK, MessageBoxIcon.Error)
            Exit Sub
        End Try

    End Sub

    Private Sub btPesquisar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btPesquisar.Click

        Try

            frmLocalizadorGeral.SetParametros("usuarios", "Pesquisar Usuários", Me)
            frmLocalizadorGeral.Show()

        Catch ex As Exception
            MessageBox.Show("Ocorreu um Erro Inesperado. Favor, Contate o Administrador do Sistema ou a Equipe de Suporte de sua localidade! ", "Fatal - Erro", MessageBoxButtons.OK, MessageBoxIcon.Error)
            Exit Sub
        End Try

    End Sub

    Private Sub btListarPerfisAcesso_Click(sender As System.Object, e As System.EventArgs) Handles btListarPerfisAcesso.Click
        Try

            PreencheCombobox()

        Catch ex As Exception
            MessageBox.Show("Ocorreu um Erro Inesperado. Favor, Contate o Administrador do Sistema ou a Equipe de Suporte de sua localidade! ", "Fatal - Erro", MessageBoxButtons.OK, MessageBoxIcon.Error)
            Exit Sub
        End Try
    End Sub

    Private Sub btExcluir_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btExcluir.Click

        Dim objUsuario As New entidadeUsuario

        Dim objRastreamento As New entidadeRastreamento
        Dim repositorioRastreamento As New repositorioRastreamento

        Try

            If Trim(Me.txtCodigo.Text) <> "0" Then

                vResp = MessageBox.Show("Esta operação não possui retorno!" & vbCrLf & vbCrLf & "Tem certeza de que deseja excluir este registro?", "Confirmação de Exclusão", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question)

                If vResp = DialogResult.Yes Then

                    objUsuario.ID = Convert.ToInt32(txtCodigo.Text)

                    If Not lDelete(objUsuario) Then

                        MessageBox.Show("Usuario não pode ser excluído!", "Confirmação de Exclusão", MessageBoxButtons.OK, MessageBoxIcon.Information)

                    Else

                        objRastreamento.DATA = DateTime.Now
                        objRastreamento.DESCRICAO = "Excluiu o usuário - " & txtLogin.Text.ToUpper()
                        objRastreamento.COD_USUARIO = vUsuario.ID
                        objRastreamento.LOGIN_USUARIO = vUsuario.LOGIN
                        objRastreamento.NOME_COMPUTADOR = My.Computer.Name
                        objRastreamento.MAC_ADDRESS = GetMacAddress()
                        objRastreamento.VERSAO = Application.ProductVersion


                        '[Grava rastreamento]
                        repositorioRastreamento.Insert(objRastreamento)

                        MessageBox.Show("Usuario excluído com sucesso!", "Confirmação de Exclusão", MessageBoxButtons.OK, MessageBoxIcon.Information)
                        lClear()
                        frmCadastroUsuarios_Load(Me, New System.EventArgs())
                    End If

                ElseIf vResp = DialogResult.Cancel Then
                    Exit Sub
                End If

            End If

        Catch ex As Exception
            MessageBox.Show("Ocorreu um Erro Inesperado. Favor, Contate o Administrador do Sistema ou a Equipe de Suporte de sua localidade! ", "Fatal - Erro", MessageBoxButtons.OK, MessageBoxIcon.Error)
            Exit Sub
        End Try

    End Sub

    Private Sub frmCadastroUsuarios_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown

        Try



            If vUsuario.ID = 0 And e.KeyCode = Keys.F10 Then
                Me.txtSenhaDescrip.Visible = True
                Me.txtSenhaDescrip.Text = Me.txtSenha.Text
            End If


        Catch ex As Exception
            MessageBox.Show("Ocorreu um Erro Inesperado. Favor, Contate o Administrador do Sistema ou a Equipe de Suporte de sua localidade! ", "Fatal - Erro", MessageBoxButtons.OK, MessageBoxIcon.Error)
            Exit Sub
        End Try

    End Sub

    Private Sub frmCadastroUsuarios_FormClosed(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosedEventArgs) Handles Me.FormClosed

        Try
            If Not vfrmOld Is Nothing Then
                vfrmOld.Enabled = True
            End If
        Catch ex As Exception
            MessageBox.Show("Ocorreu um Erro Inesperado. Favor, Contate o Administrador do Sistema ou a Equipe de Suporte de sua localidade! ", "Fatal - Erro", MessageBoxButtons.OK, MessageBoxIcon.Error)
            Exit Sub
        End Try

    End Sub

#End Region

#Region "Métodos"

    Private Sub lAtualizaList()

        Dim objEmpresa As New entidadeEmpresa

        Try
            objEmpresa.NOME = ConfigurationManager.AppSettings("prefixo_bd_principal")

            CarregarGrid(objEmpresa)

            If lvEmpresas.Items.Count <> 0 Then

                lvEmpresas.Focus()
                lvEmpresas.Items.Item(0).Selected = True
                lvEmpresas.FocusedItem = lvEmpresas.Items.Item(0)
                lvEmpresas.Items.Item(0).EnsureVisible()

            End If

        Catch ex As Exception
            Exit Sub
        End Try

    End Sub

    Public Sub PrepararListView()

        Try

            lvEmpresas.Items.Clear()
            lvEmpresas.Columns.Clear()
            lvEmpresas.Columns.Add(String.Empty, String.Empty, 100)


        Catch ex As Exception
            Exit Sub
        End Try

    End Sub

    Public Sub CarregarGrid(ByRef objEmpresa As entidadeEmpresa)

        Try
            i = 0
            PrepararListView()
            For Each objEmpresaFor As entidadeEmpresa In New repositorioEmpresa().SelectOthersTables(objEmpresa)
                i += 1
                AddListItem(mItem, objEmpresaFor)
            Next

        Catch ex As Exception
            Exit Sub
        End Try

    End Sub

    Private Sub AddListItem(ByRef xItem As System.Windows.Forms.ListViewItem, ByRef objEmpresa As entidadeEmpresa)

        Try

            If objEmpresa.NOME.ToString.ToUpper() = ConfigurationManager.AppSettings("table_fat") Then

                xItem = lvEmpresas.Items.Add(Strings.UCase(Strings.Mid(objEmpresa.NOME, Strings.Len(ConfigurationManager.AppSettings("prefixo_bd_principal")) + 2)), i - 1)

            End If

        Catch ex As Exception
            Exit Sub
        End Try

    End Sub

    Private Sub PreencheCombobox()

        Try
            PreencherPerfilMenu(cbPerfilMenu)

        Catch ex As Exception
            Exit Sub
        End Try

    End Sub

    Private Sub TratamentoTeclasDeAtalho(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyUp


        Try

            If e.KeyCode = Keys.Escape Then
                btFechar.PerformClick()
            ElseIf e.Control = True And e.KeyCode = Keys.N Then
                btNovo.PerformClick()
            ElseIf e.Control = True And e.KeyCode = Keys.S Then
                btSalvar.PerformClick()
            ElseIf e.Control = True And e.KeyCode = Keys.E Then
                btExcluir.PerformClick()
            ElseIf e.Control = True And e.KeyCode = Keys.L Then
                btPesquisar.PerformClick()
            End If

        Catch ex As Exception
            Exit Sub
        End Try

    End Sub

    Public Sub SetaParametros(ByRef frmOld As System.Windows.Forms.Form)

        Try

            vfrmOld = frmOld
            vfrmOld.Enabled = False

        Catch ex As Exception
            Exit Sub
        End Try

    End Sub

    Public Sub SetaCodigo(ByVal astrTabela As String, ByVal alngId_A As Integer, Optional ByVal alngId_B As Integer = 0, Optional ByVal alngId_C As Integer = 0, Optional ByVal alngId_D As Integer = 0)

        Dim vlist

        Dim objUsuario As New entidadeUsuario
        Dim repositorioUsuario As New repositorioUsuario

        Dim objUsuarioEmpresa As New entidadeUsuarioEmpresa
        Dim repositorioUsuarioEmpresa As New repositorioUsuarioEmpresa

        Try

            If astrTabela.ToUpper() = "USUARIOS" Then

                objUsuario.ID = alngId_A

                vlist = repositorioUsuario.Select_1(objUsuario)

                If vlist.Count > 0 Then

                    For Each objUsuarioFor As entidadeUsuario In vlist

                        vCodigo = CStr(IIf(IsDBNull(objUsuarioFor.ID), 0, objUsuarioFor.ID))

                        Me.txtCodigoPrincipal.Text = IIf(IsDBNull(Strings.Format(objUsuarioFor.ID, "00000")), 0, Strings.Format(objUsuarioFor.ID, "00000"))
                        Me.txtCodigo.Text = Me.txtCodigoPrincipal.Text
                        Me.txtNomeCompleto.Text = IIf(IsDBNull(objUsuarioFor.NOME), String.Empty, objUsuarioFor.NOME)
                        Me.txtLogin.Text = IIf(IsDBNull(objUsuarioFor.LOGIN), String.Empty, objUsuarioFor.LOGIN)
                        Me.txtSenha.Text = IIf(IsDBNull(Crypt(objUsuarioFor.SENHA)), String.Empty, Crypt(objUsuarioFor.SENHA))
                        Me.txtConfirmacaoSenha.Text = IIf(IsDBNull(Crypt(objUsuarioFor.SENHA)), String.Empty, Crypt(objUsuarioFor.SENHA))
                        Me.txtUltimoAcesso.Text = CDate(IIf(IsDBNull(objUsuarioFor.ULTIMO_ACESSO), Date.Now.ToShortDateString(), objUsuarioFor.ULTIMO_ACESSO))
                        Me.cbPerfilMenu.SelectedIndex = CInt(IIf(IsDBNull(objUsuarioFor.PERFIL_MENU), 0, objUsuarioFor.PERFIL_MENU))


                        If objUsuarioFor.ADMINISTRADOR = 1 Then
                            chkAdministrador.Checked = True
                        Else
                            chkAdministrador.Checked = False
                        End If

                        Me.txtLogin.Enabled = False

                        vNew = False

                        '[Busca as permissões de acesso do usuário]

                        lAtualizaList()

                        objUsuarioEmpresa.ID_SISTEMA = vintIdSistema
                        objUsuarioEmpresa.ID_USUARIO = CInt(IIf(IsDBNull(objUsuarioFor.ID), 0, objUsuarioFor.ID))
                        objUsuarioEmpresa.EMPRESA = gstrEmpresa_Sigla

                        vlist = repositorioUsuarioEmpresa.Select(objUsuarioEmpresa)

                        If vlist.Count <> 0 Then

                            For Each objUsuarioEmpresaFor As entidadeUsuarioEmpresa In vlist

                                If lvEmpresas.Items.Count <> 0 Then

                                    For cont As Integer = 0 To Me.lvEmpresas.Items.Count - 1
                                        If Me.lvEmpresas.Items.Item(cont).Text = objUsuarioEmpresaFor.EMPRESA.ToString().ToUpper() Then
                                            Me.lvEmpresas.Items.Item(cont).Checked = CBool(objUsuarioEmpresaFor.ID_PERMISSAO)
                                        End If
                                    Next

                                End If

                            Next

                        End If

                    Next

                Else
                    MessageBox.Show("Não foi possível encontrar o registro!", "Informação", MessageBoxButtons.OK, MessageBoxIcon.Information)
                End If

            End If

        Catch ex As Exception
            Exit Sub
        End Try

    End Sub

    Private Sub lNew()

        Try

            vNew = True

            lClear()

        Catch ex As Exception
            Exit Sub
        End Try

    End Sub

    Private Sub lClose()

        Try
            Me.Close()

        Catch ex As Exception
            Exit Sub
        End Try

    End Sub

    Private Sub lClear()

        Try

            Me.txtCodigoPrincipal.Text = String.Empty
            Me.txtCodigo.Text = String.Empty
            Me.txtNomeCompleto.Text = String.Empty
            Me.txtLogin.Text = String.Empty
            Me.txtSenha.Text = String.Empty
            Me.txtConfirmacaoSenha.Text = String.Empty
            Me.txtUltimoAcesso.Text = String.Empty
            Me.cbPerfilMenu.SelectedIndex = 0
            Me.txtLogin.Enabled = True

            lAtualizaList()
            PreencheCombobox()

            Me.txtCodigo.Select()

        Catch ex As Exception
            Exit Sub
        End Try



    End Sub

    Private Sub lHabilitaDesabilitaCampo(ByVal Campos As Boolean)

        Try

            '[Se o usuário for limitado, bloqueia os campos]
            lvEmpresas.Enabled = Campos
            btNovo.Enabled = Campos
            btSalvar.Enabled = Campos
            btExcluir.Enabled = Campos

        Catch ex As Exception
            Exit Sub
        End Try

    End Sub

    Private Function lInsert() As Boolean

        Dim objUsuario As New entidadeUsuario
        Dim repositorioUsuario As New repositorioUsuario

        Try


            objUsuario.NOME = Convert.ToString(Trim(IIf(String.IsNullOrEmpty((Me.txtNomeCompleto.Text)), String.Empty, Me.txtNomeCompleto.Text)))
            objUsuario.LOGIN = Convert.ToString(Trim(IIf(String.IsNullOrEmpty((Me.txtLogin.Text)), String.Empty, Me.txtLogin.Text)))
            objUsuario.SENHA = Convert.ToString(Trim(IIf(String.IsNullOrEmpty(Crypt(Me.txtSenha.Text)), String.Empty, Crypt(Me.txtSenha.Text))))
            objUsuario.PERFIL_MENU = cbPerfilMenu.SelectedIndex
            objUsuario.ADMINISTRADOR = Convert.ToBoolean(chkAdministrador.Checked)

            repositorioUsuario.Insert(objUsuario)

            Return True
        Catch ex As Exception
            Return False
        End Try

    End Function

    Private Function lUpdate() As Boolean

        Dim objUsuario As New entidadeUsuario
        Dim repositorioUsuario As New repositorioUsuario


        Try

            objUsuario.ID = Convert.ToInt32(Trim(IIf(String.IsNullOrEmpty((vCodigo)), "0", vCodigo)))
            objUsuario.NOME = Convert.ToString(Trim(IIf(String.IsNullOrEmpty((Me.txtNomeCompleto.Text)), String.Empty, Me.txtNomeCompleto.Text)))
            objUsuario.LOGIN = Convert.ToString(Trim(IIf(String.IsNullOrEmpty((Me.txtLogin.Text)), String.Empty, Me.txtLogin.Text)))
            objUsuario.SENHA = Convert.ToString(Trim(IIf(String.IsNullOrEmpty(Crypt(Me.txtSenha.Text)), String.Empty, Crypt(Me.txtSenha.Text))))
            objUsuario.PERFIL_MENU = cbPerfilMenu.SelectedIndex
            objUsuario.ADMINISTRADOR = Convert.ToBoolean(chkAdministrador.Checked)

            repositorioUsuario.Update_1(objUsuario)

            Return True
        Catch ex As Exception
            Return False
        End Try

    End Function

    Private Function lDelete(ByRef objUsuario As entidadeUsuario) As Boolean
        Dim repositorioUsuario As New repositorioUsuario
        Try

            repositorioUsuario.Delete(objUsuario)

            Return True
        Catch ex As Exception
            Return False
        End Try
    End Function

#End Region


End Class