Option Strict Off
Option Explicit On

Imports fatd_faturamento.BLL.Repositorio
Imports fatd_faturamento.ENTIDADE

Friend Class frmConfig
    Inherits System.Windows.Forms.Form
    Private mItem As System.Windows.Forms.ListViewItem ' Objeto que controla a linha do listview
    Dim vCodigo As String
    Dim vResp As Short

#Region "Propriedades"

    Private Sub frmConfig_Load(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles MyBase.Load

        Try

            lAtualizaList()

        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 lvwConfig_ColumnClick(ByVal eventSender As System.Object, ByVal eventArgs As System.Windows.Forms.ColumnClickEventArgs) Handles lvwConfig.ColumnClick
        Dim ColumnHeader As System.Windows.Forms.ColumnHeader = lvwConfig.Columns(eventArgs.Column)
        Try
            lvwConfig.ListViewItemSorter = New ListViewItemComparer(eventArgs.Column)
            lvwConfig.Sort()
        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 lvwConfig_DoubleClick(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles lvwConfig.DoubleClick
        Try
            If lvwConfig.Items.Count > 0 Then
                lEdit(lvwConfig.FocusedItem.Text.Trim())
            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 txtLocalizar_TextChanged(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles txtLocalizar.TextChanged

        Try

            lAtualizaList()

        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 txtLocalizar_KeyPress(ByVal eventSender As System.Object, ByVal eventArgs As System.Windows.Forms.KeyPressEventArgs) Handles txtLocalizar.KeyPress

        Dim KeyAscii As Short = Asc(eventArgs.KeyChar)

        Try

            If KeyAscii = System.Windows.Forms.Keys.Return Then
                lvwConfig.Focus()
            End If

            eventArgs.KeyChar = Chr(KeyAscii)

            If KeyAscii = 0 Then
                eventArgs.Handled = 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 txtValor_Enter(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles txtValor.Enter

        Try

            txtValor.SelectionStart = 0
            txtValor.SelectionLength = Len(txtValor.Text)

        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 txtComentario_Enter(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles txtComentario.Enter


        Try

            txtComentario.SelectionStart = 0
            txtComentario.SelectionLength = Len(txtComentario.Text)

        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 txtValor_KeyPress(ByVal eventSender As System.Object, ByVal eventArgs As System.Windows.Forms.KeyPressEventArgs) Handles txtValor.KeyPress

        Dim KeyAscii As Short = Asc(eventArgs.KeyChar)

        Try

            If KeyAscii = System.Windows.Forms.Keys.Return Then
                Call btOk_Click(btOk, New System.EventArgs())
            End If
            eventArgs.KeyChar = Chr(KeyAscii)
            If KeyAscii = 0 Then
                eventArgs.Handled = 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 BtLimpar_Click(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles btLimpar.Click
        Try

            lClear()
        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 eventSender As System.Object, ByVal eventArgs 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 btCancelar_Click(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles btCancelar.Click

        Try

            lvwConfig.Enabled = True

            btFechar.Enabled = True

            Frame1.Visible = False
            Frame1.Enabled = False

            lvwConfig.Focus()

        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 btOk_Click(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles btOk.Click

        Try

            If lUpdate() Then
                MessageBox.Show("Configuração atualizada com sucesso!", "Informação", MessageBoxButtons.OK, MessageBoxIcon.Information)
                lClear()
                lAtualizaList()
            Else
                MessageBox.Show("Configuração não pode ser atualizada!", "Informação", MessageBoxButtons.OK, MessageBoxIcon.Information)
                Exit Sub
            End If

            btCancelar_Click(btCancelar, New System.EventArgs())

        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 frmConfig_KeyPress(ByVal eventSender As System.Object, ByVal eventArgs As System.Windows.Forms.KeyPressEventArgs) Handles MyBase.KeyPress

        Dim KeyAscii As Short = Asc(eventArgs.KeyChar)

        Try


            If KeyAscii = System.Windows.Forms.Keys.Escape Then

                If Frame1.Enabled = True And Frame1.Visible = True Then
                    btCancelar_Click(btCancelar, New System.EventArgs())
                Else
                    lClose()
                End If

            End If

            eventArgs.KeyChar = Chr(KeyAscii)

            If KeyAscii = 0 Then
                eventArgs.Handled = 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 objConfiguracoes As New entidadeConfiguracoes

        Try

            If txtLocalizar.Text <> String.Empty Then
                objConfiguracoes.NOME = txtLocalizar.Text
            Else
                objConfiguracoes.NOME = String.Empty
            End If

            CarregarGrid(objConfiguracoes)

            If lvwConfig.Items.Count <> 0 Then

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

            End If

        Catch ex As Exception
            Exit Sub
        End Try

    End Sub

    Public Sub PrepararListView()

        Try

            lvwConfig.Items.Clear()
            lvwConfig.Columns.Clear()
            lvwConfig.Columns.Add(String.Empty, "Parâmetro", 300)
            lvwConfig.Columns.Add(String.Empty, "Tipo", 10)
            lvwConfig.Columns.Add(String.Empty, "Valor", 200)
            lvwConfig.Columns.Add(String.Empty, "Descrição", 400)
            lvwConfig.Columns.Add(String.Empty, "Status", 100)

        Catch ex As Exception
            Exit Sub
        End Try

    End Sub

    Public Sub CarregarGrid(ByRef objConfiguracoes As entidadeConfiguracoes)

        Try
            PrepararListView()
            For Each objConfiguracoesFor As entidadeConfiguracoes In New repositorioConfiguracoes().Select_1(objConfiguracoes)
                AddListItem(mItem, objConfiguracoesFor)
            Next

        Catch ex As Exception
            Exit Sub
        End Try

    End Sub

    Private Sub AddListItem(ByRef xItem As System.Windows.Forms.ListViewItem, ByRef objConfiguracoes As entidadeConfiguracoes)

        Try

            xItem = lvwConfig.Items.Add(objConfiguracoes.NOME.ToString(), objConfiguracoes.NOME, String.Empty)

            If (String.IsNullOrEmpty(objConfiguracoes.TIPO)) Then
                xItem.SubItems.Add(Space(1))
            Else
                xItem.SubItems.Add(objConfiguracoes.TIPO)
            End If

            If (String.IsNullOrEmpty(objConfiguracoes.VALOR)) Then
                xItem.SubItems.Add(Space(1))
            Else
                xItem.SubItems.Add(objConfiguracoes.VALOR)
            End If

            If (String.IsNullOrEmpty(objConfiguracoes.DESCRICAO)) Then
                xItem.SubItems.Add(Space(1))
            Else
                xItem.SubItems.Add(objConfiguracoes.DESCRICAO)
            End If

            If (String.IsNullOrEmpty(objConfiguracoes.ACESSO)) Then
                xItem.SubItems.Add(Space(1))
            Else

                If objConfiguracoes.ACESSO = 0 Then
                    xItem.SubItems.Add("INATIVO")
                Else
                    xItem.SubItems.Add("ATIVO")
                End If

            End If

        Catch ex As Exception
            Exit Sub
        End Try

    End Sub

    Private Sub PreencherValoresList(ByRef Items As String)

        vCodigo = Items

        Dim Item As ListViewItem

        Try

            For Each Item In lvwConfig.Items

                If Item.Text = vCodigo Then

                    'Pega a Coluna 0
                    labelParametro.Text = (Item.Text)

                    'Para pegar os SubItems e so fazer o seguinte
                    txtTipo.Text = (Item.SubItems(1).Text)
                    txtValor.Text = (Item.SubItems(2).Text)
                    txtComentario.Text = (Item.SubItems(3).Text)

                    If Item.SubItems(4).Text = "ATIVO" Then
                        chkAtivo.Checked = True
                    Else
                        chkAtivo.Checked = False
                    End If

                    lvwConfig.Enabled = False
                    btFechar.Enabled = False

                    Frame1.Visible = True
                    Frame1.Enabled = True

                    txtValor.Focus()

                End If

            Next

            Item = Nothing


        Catch ex As Exception
            Exit Sub
        End Try

    End Sub

    Private Sub lEdit(ByRef Item As String)

        vCodigo = Item

        Try

            PreencherValoresList(vCodigo)

        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
            txtLocalizar.Text = String.Empty
        Catch ex As Exception
            Exit Sub
        End Try
    End Sub

    Private Function lUpdate() As Boolean

        Dim objConfiguracoes As New entidadeConfiguracoes
        Dim repositorioConfiguracoes As New repositorioConfiguracoes

        Dim lstrAux As String

        Try

            lstrAux = Trim(txtValor.Text)

            If InStr(1, lstrAux, "\") Then
                txtValor.Text = Replace(lstrAux, "\", "\\")
            End If

            objConfiguracoes.NOME = Trim(IIf(String.IsNullOrEmpty(labelParametro.Text), " ", labelParametro.Text))
            objConfiguracoes.TIPO = Trim(IIf(String.IsNullOrEmpty(txtTipo.Text), " ", txtTipo.Text))
            objConfiguracoes.VALOR = Trim(IIf(String.IsNullOrEmpty((txtValor.Text)), " ", txtValor.Text))
            objConfiguracoes.DESCRICAO = Trim(IIf(String.IsNullOrEmpty((txtComentario.Text)), " ", txtComentario.Text))

            If chkAtivo.Checked = True Then
                objConfiguracoes.ACESSO = 1
            Else
                objConfiguracoes.ACESSO = 0
            End If

            repositorioConfiguracoes.Update_1(objConfiguracoes)

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

    End Function

#End Region


End Class