Option Strict Off
Option Explicit On

Imports fatd_faturamento.BLL.Repositorio
Imports fatd_faturamento.ENTIDADE
Friend Class frmCadastroRegiao
    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
    Dim vNew As Boolean
    Dim bRegistros As Boolean

#Region "Propriedades"

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

            LigDesFrame(True)
            lAtualizaList()

            If lvwRegioes.Items.Count <= 0 Then
                cmdNovo.Top = 160
                cmdSair.Top = 160
                bRegistros = 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 lvwRegioes_ColumnClick(ByVal eventSender As System.Object, ByVal eventArgs As System.Windows.Forms.ColumnClickEventArgs) Handles lvwRegioes.ColumnClick

        Dim ColumnHeader As System.Windows.Forms.ColumnHeader = lvwRegioes.Columns(eventArgs.Column)

        Try
            lvwRegioes.ListViewItemSorter = New ListViewItemComparer(eventArgs.Column)
            lvwRegioes.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 lvwRegioes_DoubleClick(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles lvwRegioes.DoubleClick

        Try

            If lvwRegioes.Items.Count > 0 Then

                LigDesFrame(False)

                vNew = False
                lEdit(lvwRegioes.FocusedItem.Name.Trim())

                Me.txtDescricao.Focus()

            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 cmdNovo_Click(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles cmdNovo.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 cmdSalvar_Click(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles cmdSalvar.Click

        Try

            If vNew = True Then

                If lInsert() Then
                    MessageBox.Show("Região criada com sucesso!", "Informação", MessageBoxButtons.OK, MessageBoxIcon.Information)
                    frmCadRegiao_Load(Me, New System.EventArgs())
                Else
                    MessageBox.Show("Região não pode ser criada!", "Informação", MessageBoxButtons.OK, MessageBoxIcon.Information)
                    Exit Sub
                End If

            Else

                If lUpdate() Then
                    MessageBox.Show("Região atualizada com sucesso!", "Informação", MessageBoxButtons.OK, MessageBoxIcon.Information)
                    frmCadRegiao_Load(Me, New System.EventArgs())
                Else
                    MessageBox.Show("Região não pode ser atualizada!", "Informação", MessageBoxButtons.OK, MessageBoxIcon.Information)
                    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 cmdExcluir_Click(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles cmdExcluir.Click

        Dim objRegiao As New entidadeRegiao


        Try

            vResp = MessageBox.Show("Deseja realmente excluir este registro?", "Confirmação de Exclusão", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question)

            If vResp = DialogResult.Yes Then

                objRegiao.ID = Convert.ToInt32(txtId.Text)

                If Not lDelete(objRegiao) Then
                    MessageBox.Show("Região não pode ser excluído!", "Confirmação de Exclusão", MessageBoxButtons.OK, MessageBoxIcon.Information)
                    Exit Sub
                Else
                    MessageBox.Show("Região excluído com sucesso!", "Confirmação de Exclusão", MessageBoxButtons.OK, MessageBoxIcon.Information)
                    frmCadRegiao_Load(Me, New System.EventArgs())
                End If


            ElseIf vResp = DialogResult.Cancel Then
                Exit Sub
            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 cmdSair_Click(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles cmdSair.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 txtDescricao_Enter(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles txtDescricao.Enter


        Try

            With Me.txtDescricao
                .SelectionStart = 0
                .SelectionLength = Len(.Text)
            End With

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


        Try

            With Me.txtSigla
                .SelectionStart = 0
                .SelectionLength = Len(.Text)
            End With

        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 frmCadRegiao_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
                cmdSair_Click(cmdSair, New System.EventArgs())
            ElseIf KeyAscii = System.Windows.Forms.Keys.Return Then
                TabEnter(KeyAscii, 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

#End Region

#Region "Métodos"

    Private Sub lAtualizaList()

        Dim objRegiao As New entidadeRegiao

        Try
            CarregarGrid(objRegiao)

            If lvwRegioes.Items.Count <> 0 Then

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

            End If

        Catch ex As Exception
            Exit Sub
        End Try

    End Sub

    Public Sub PrepararListView()

        Try

            lvwRegioes.Items.Clear()
            lvwRegioes.Columns.Clear()
            lvwRegioes.Columns.Add(String.Empty, "Id", 50)
            lvwRegioes.Columns.Add(String.Empty, "Descrição", 300)

        Catch ex As Exception
            Exit Sub
        End Try

    End Sub

    Public Sub CarregarGrid(ByRef objRegiao As entidadeRegiao)

        Try
            PrepararListView()
            For Each objRegiaoFor As entidadeRegiao In New repositorioRegiao().Select(objRegiao)
                AddListItem(mItem, objRegiaoFor)
            Next
        Catch ex As Exception
            Exit Sub
        End Try

    End Sub

    Private Sub AddListItem(ByRef xItem As System.Windows.Forms.ListViewItem, ByRef objRegiao As entidadeRegiao)

        Try

            xItem = lvwRegioes.Items.Add(objRegiao.ID.ToString(), objRegiao.ID.ToString(), String.Empty)

            If (String.IsNullOrEmpty(Convert.ToString(objRegiao.DESCRICAO))) Then
                xItem.SubItems.Add(Space(1))
            Else
                xItem.SubItems.Add(objRegiao.DESCRICAO)
            End If

            If (String.IsNullOrEmpty(Convert.ToString(objRegiao.SIGLA))) Then
                xItem.SubItems.Add(Space(1))
            Else
                xItem.SubItems.Add(objRegiao.SIGLA)
            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 lvwRegioes.Items

                If Item.Name = vCodigo Then

                    'Pega a Coluna 0
                    txtId.Text = IIf(String.IsNullOrEmpty((Item.Text)), "0", (Item.Text))

                    'Para pegar os SubItems e so fazer o seguinte
                    txtDescricao.Text = IIf(String.IsNullOrEmpty((Item.SubItems(1).Text)), "0", (Item.SubItems(1).Text))
                    txtSigla.Text = IIf(String.IsNullOrEmpty((Item.SubItems(2).Text)), "B", (Item.SubItems(2).Text))

                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 lNew()

        Try

            vNew = True

            lClear()

            If bRegistros Then
                LigDesFrame(False)
                cmdNovo.Top = 9
                cmdSair.Top = 9
            End If

            Me.txtDescricao.Focus()

        Catch ex As Exception
            Exit Sub
        End Try

    End Sub

    Private Sub lClear()

        Try

            Me.txtId.Text = "0"
            Me.txtDescricao.Text = String.Empty
            Me.txtSigla.Text = String.Empty

        Catch ex As Exception
            Exit Sub
        End Try

    End Sub

    Private Sub lClose()

        Try

            Close()

        Catch ex As Exception
            Exit Sub
        End Try

    End Sub

    Private Sub LigDes(ByVal ablnModo As Boolean)

        Try
            Me.txtDescricao.Enabled = ablnModo
            Me.txtDescricao.BackColor = System.Drawing.ColorTranslator.FromOle(IIf(ablnModo, System.Drawing.ColorTranslator.ToOle(System.Drawing.SystemColors.Window), System.Drawing.ColorTranslator.ToOle(System.Drawing.SystemColors.Control)))
            Me.txtSigla.Enabled = ablnModo
            Me.txtSigla.BackColor = System.Drawing.ColorTranslator.FromOle(IIf(ablnModo, System.Drawing.ColorTranslator.ToOle(System.Drawing.SystemColors.Window), System.Drawing.ColorTranslator.ToOle(System.Drawing.SystemColors.Control)))
        Catch ex As Exception
            Exit Sub
        End Try

    End Sub

    Private Sub LigDesFrame(ByVal ablnModo As Boolean)

        Try
            Me.fmePesquisa.Visible = ablnModo
            Me.fmePesquisa.Enabled = ablnModo
            Me.fmeCadastro.Enabled = (Not ablnModo)
        Catch ex As Exception
            Exit Sub
        End Try

    End Sub

    Private Function lInsert() As Boolean

        Dim objRegiao As New entidadeRegiao
        Dim repositorioRegiao As New repositorioRegiao

        Try

            objRegiao.DESCRICAO = Trim(IIf(String.IsNullOrEmpty((txtDescricao.Text)), " ", txtDescricao.Text))
            objRegiao.SIGLA = Trim(IIf(String.IsNullOrEmpty((txtSigla.Text)), " ", txtSigla.Text))


            repositorioRegiao.Insert(objRegiao)

            Return True
        Catch ex As Exception
            Return False
        End Try

    End Function

    Private Function lUpdate() As Boolean

        Dim objRegiao As New entidadeRegiao
        Dim repositorioRegiao As New repositorioRegiao


        Try


            objRegiao.ID = Convert.ToInt32(Trim(IIf(String.IsNullOrEmpty((txtId.Text)), "0", txtId.Text)))
            objRegiao.DESCRICAO = Trim(IIf(String.IsNullOrEmpty((txtDescricao.Text)), " ", txtDescricao.Text))
            objRegiao.SIGLA = Trim(IIf(String.IsNullOrEmpty((txtSigla.Text)), " ", txtSigla.Text))

            repositorioRegiao.Update(objRegiao)

            Return True
        Catch ex As Exception
            Return False
        End Try

    End Function

    Private Function lDelete(ByRef objRegiao As entidadeRegiao) As Boolean
        Dim repositorioRegiao As New repositorioRegiao
        Try

            repositorioRegiao.Delete(objRegiao)

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


#End Region


End Class