Option Strict Off
Option Explicit On

Imports fatd_faturamento.BLL.Repositorio
Imports fatd_faturamento.ENTIDADE


Friend Class frmAutoLeitura
    Inherits System.Windows.Forms.Form
    Private mItem As System.Windows.Forms.ListViewItem ' Objeto que controla a linha do listview
    Dim vNew As Boolean
    Dim vResp As Short
    Dim vCodigo As Integer
    Dim vConsId As Integer
    Dim vUnidId As Integer

#Region "Propriedades"

    Private Sub frmAutoLeitura_Load(sender As Object, e As EventArgs) Handles MyBase.Load

        Try

            btnExcluir.Enabled = False
            dtLeitura.Value = Date.Now

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

        Try

            With Me.txtZona
                .SelectionStart = 0
                .SelectionLength = Len(.Text)
            End With
            Me.txtLivro.Text = String.Empty
            Me.txtConta.Text = String.Empty

        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 txtZona_Leave(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles txtZona.Leave

        Try

            With Me.txtZona
                .Text = VB6.Format(Convert.ToInt64(IIf(String.IsNullOrEmpty(.Text), "0", .Text)), "000")
            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 txtZona_KeyPress(ByVal eventSender As System.Object, ByVal eventArgs As System.Windows.Forms.KeyPressEventArgs) Handles txtZona.KeyPress

        Dim KeyAscii As Short = Asc(eventArgs.KeyChar)

        Try

            If 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

    Private Sub txtConta_Enter(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles txtConta.Enter

        Try

            With Me.txtConta
                .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 txtConta_Leave(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles txtConta.Leave

        Try

            With Me.txtConta
                .Text = VB6.Format(Convert.ToInt64(IIf(String.IsNullOrEmpty(.Text), "0", .Text)), "000000")
            End With

            SetaCodigo(0, Me.txtZona.Text, Me.txtLivro.Text, Me.txtConta.Text, "B")


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

        Dim KeyAscii As Short = Asc(eventArgs.KeyChar)

        Try

            If 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

    Private Sub txtLivro_Enter(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles txtLivro.Enter

        Try

            With Me.txtLivro
                .SelectionStart = 0
                .SelectionLength = Len(.Text)
            End With
            Me.txtConta.Text = String.Empty

        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 txtLivro_Leave(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles txtLivro.Leave

        Try

            With Me.txtLivro
                .Text = VB6.Format(Convert.ToInt64(IIf(String.IsNullOrEmpty(.Text), "0", .Text)), "00")
            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 txtLivro_KeyPress(ByVal eventSender As System.Object, ByVal eventArgs As System.Windows.Forms.KeyPressEventArgs) Handles txtLivro.KeyPress

        Dim KeyAscii As Short = Asc(eventArgs.KeyChar)

        Try

            If 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

    Private Sub lvwAutoLeitura_ColumnClick(ByVal eventSender As System.Object, ByVal eventArgs As System.Windows.Forms.ColumnClickEventArgs) Handles lvwAutoLeitura.ColumnClick

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

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

        Try

            If lvwAutoLeitura.Items.Count > 0 Then

                lEdit(lvwAutoLeitura.FocusedItem.Text.Trim())

                vNew = False 'Alteração de cadastro
                btnExcluir.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

    Private Sub btnLimpar_Click(sender As Object, e As EventArgs) Handles btnLimpar.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 btnExcluir_Click(sender As Object, e As EventArgs) Handles btnExcluir.Click

        Dim objAutoLeitura As New entidadeAutoLeitura

        Try

            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

                If ValidaForm() Then

                    objAutoLeitura.ID = Convert.ToInt32(vCodigo)

                    ' Exclui ligação
                    If Not lDelete(objAutoLeitura) Then

                        MessageBox.Show("Auto Leitura não pode ser excluída!", "Confirmação de Exclusão", MessageBoxButtons.OK, MessageBoxIcon.Information)
                    Else

                        MessageBox.Show("Auto Leitura excluída com sucesso!", "Confirmação de Exclusão", MessageBoxButtons.OK, MessageBoxIcon.Information)

                        ' Atualiza grid
                        SetaCodigo(0, txtZona.Text, txtLivro.Text, txtConta.Text, "B")

                    End If

                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 btnSalvar_Click(sender As Object, e As EventArgs) Handles btnSalvar.Click

        Dim objAutoLeitura As New entidadeAutoLeitura

        Try

            If ValidaForm() Then

                If lvwAutoLeitura.Items.Count > 0 Then

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

                    If vResp = DialogResult.Yes Then
                        vNew = False
                    ElseIf vResp = DialogResult.No Then

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

                        If vResp = DialogResult.Yes Then
                            vNew = True
                        Else
                            Exit Sub
                        End If

                    ElseIf vResp = DialogResult.Cancel Then
                        Exit Sub
                    End If

                Else

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

                    If vResp = DialogResult.Yes Then
                        vNew = True
                    Else
                        Exit Sub
                    End If

                End If

                If vNew = True Then

                    If lInsert() Then
                        MessageBox.Show("Auto Leitura criado com sucesso!", "Informação", MessageBoxButtons.OK, MessageBoxIcon.Information)

                        objAutoLeitura.ZONA = txtZona.Text
                        objAutoLeitura.LIVRO = txtLivro.Text
                        objAutoLeitura.CONTA = txtConta.Text
                        objAutoLeitura.CONS_ID = vConsId
                        objAutoLeitura.UNID_ID = vUnidId

                        lAtualizaList(objAutoLeitura)

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

                Else

                    If lUpdate() Then
                        MessageBox.Show("Auto Leitura atualizado com sucesso!", "Informação", MessageBoxButtons.OK, MessageBoxIcon.Information)

                        objAutoLeitura.ZONA = txtZona.Text
                        objAutoLeitura.LIVRO = txtLivro.Text
                        objAutoLeitura.CONTA = txtConta.Text
                        objAutoLeitura.CONS_ID = vConsId
                        objAutoLeitura.UNID_ID = vUnidId

                        lAtualizaList(objAutoLeitura)

                        lClear()
                    Else
                        MessageBox.Show("Auto Leitura 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 btnFechar_Click(sender As Object, e As EventArgs) Handles btnFechar.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 cmdProc_Click(sender As Object, e As EventArgs) Handles cmdProc.Click

        Try

            frmLocalizaUnidade.Show()
            frmLocalizaUnidade.SetaLocalizaUnidade("U", Me)

        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(ByRef objAutoLeitura As entidadeAutoLeitura)


        Try
            CarregarGrid(objAutoLeitura)

            If lvwAutoLeitura.Items.Count <> 0 Then

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

            End If

        Catch ex As Exception
            Exit Sub
        End Try

    End Sub

    Public Sub PrepararListView()

        Try

            lvwAutoLeitura.Items.Clear()
            lvwAutoLeitura.Columns.Clear()
            lvwAutoLeitura.Columns.Add(String.Empty, "Código", 50)
            lvwAutoLeitura.Columns.Add(String.Empty, "Data Leitura", 100)
            lvwAutoLeitura.Columns.Add(String.Empty, "Zona", 50)
            lvwAutoLeitura.Columns.Add(String.Empty, "Livro", 100)
            lvwAutoLeitura.Columns.Add(String.Empty, "Conta", 100)
            lvwAutoLeitura.Columns.Add(String.Empty, "Valor Leitura", 100)

        Catch ex As Exception
            Exit Sub
        End Try

    End Sub

    Public Sub CarregarGrid(ByRef objAutoLeitura As entidadeAutoLeitura)

        Try
            PrepararListView()
            For Each objAutoLeituraFor As entidadeAutoLeitura In New repositorioAutoLeitura().Select(objAutoLeitura)
                AddListItem(mItem, objAutoLeituraFor)
            Next
        Catch ex As Exception
            Exit Sub
        End Try

    End Sub

    Private Sub AddListItem(ByRef xItem As System.Windows.Forms.ListViewItem, ByRef objAutoLeitura As entidadeAutoLeitura)

        Try

            xItem = lvwAutoLeitura.Items.Add(objAutoLeitura.ID.ToString(), objAutoLeitura.ID.ToString(), String.Empty)

            If (String.IsNullOrEmpty(Convert.ToString(VB6.Format(objAutoLeitura.DT_LEITURA, "dd/mm/yyyy")))) Then
                xItem.SubItems.Add(Space(1))
            Else
                xItem.SubItems.Add(Convert.ToString(VB6.Format(objAutoLeitura.DT_LEITURA, "dd/mm/yyyy")))
            End If

            If (String.IsNullOrEmpty(objAutoLeitura.ZONA)) Then
                xItem.SubItems.Add(Space(1))
            Else
                xItem.SubItems.Add(objAutoLeitura.ZONA)
            End If

            If (String.IsNullOrEmpty(objAutoLeitura.LIVRO)) Then
                xItem.SubItems.Add(Space(1))
            Else
                xItem.SubItems.Add(objAutoLeitura.LIVRO)
            End If

            If (String.IsNullOrEmpty(objAutoLeitura.CONTA)) Then
                xItem.SubItems.Add(Space(1))
            Else
                xItem.SubItems.Add(objAutoLeitura.CONTA)
            End If

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

                If Item.Text = vCodigo Then

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

                    'Para pegar os SubItems e so fazer o seguinte

                    dtLeitura.Value = Convert.ToDateTime(Item.SubItems(1).Text)
                    txtZona.Text = (Item.SubItems(2).Text)
                    txtLivro.Text = (Item.SubItems(3).Text)
                    txtConta.Text = (Item.SubItems(4).Text)
                    txtLeitura.Text = (Item.SubItems(5).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 lClose()

        Try

            Me.Close()

        Catch ex As Exception
            Exit Sub
        End Try

    End Sub

    Private Sub lClear()

        Try

            txtZona.Text = String.Empty
            txtLivro.Text = String.Empty
            txtConta.Text = String.Empty
            txtLeitura.Text = String.Empty
            dtLeitura.Value = Date.Now
            vNew = False
            btnExcluir.Enabled = False

        Catch ex As Exception
            Exit Sub
        End Try

    End Sub

    Private Function ValidaForm() As Boolean

        Try

            If txtZona.Text = "" Or txtLivro.Text = "" Or txtConta.Text = "" Then
                MessageBox.Show("Consumidor não encontrado!", "Informação", MessageBoxButtons.OK, MessageBoxIcon.Information)
                ValidaForm = False
            ElseIf txtLeitura.Text = "" Then
                MessageBox.Show("Leitura deve ser informada!", "Informação", MessageBoxButtons.OK, MessageBoxIcon.Information)
                ValidaForm = False
            Else
                ValidaForm = True
            End If

        Catch ex As Exception
            Exit Function
        End Try

    End Function

    Public Sub SetaCodigo(ByVal alngUnidId As Integer, ByVal astrZona As String, ByVal astrLivro As String, ByVal astrConta As String, ByVal astrGrupo As String)


        Dim vlist

        Dim objAutoLeitura As New entidadeAutoLeitura

        Dim objUCFaturamento As New entidadeUCFaturamento
        Dim repositorioUCFaturamento As New repositorioUCFaturamento

        Try

            objUCFaturamento.ZONA = astrZona
            objUCFaturamento.LIVRO = astrLivro
            objUCFaturamento.CONTA = astrConta
            objUCFaturamento.GRUPO = "B"

            vlist = repositorioUCFaturamento.Select_11(objUCFaturamento)

            If vlist.Count > 0 Then

                For Each objUCFaturamentoFor As entidadeUCFaturamento In vlist

                    txtZona.Text = astrZona
                    txtLivro.Text = astrLivro
                    txtConta.Text = astrConta
                    vConsId = objUCFaturamentoFor.CONS_ID
                    vUnidId = objUCFaturamentoFor.UNID_ID

                    objAutoLeitura.ZONA = txtZona.Text
                    objAutoLeitura.LIVRO = txtLivro.Text
                    objAutoLeitura.CONTA = txtConta.Text
                    objAutoLeitura.CONS_ID = vConsId
                    objAutoLeitura.UNID_ID = vUnidId

                    lAtualizaList(objAutoLeitura)

                Next
            Else
                MessageBox.Show("Consumidor não encontrado!", "Informação", MessageBoxButtons.OK, MessageBoxIcon.Information)
                txtZona.Focus()
            End If

        Catch ex As Exception
            Exit Sub
        End Try


    End Sub

    Private Function lInsert() As Boolean

        Dim objAutoLeitura As New entidadeAutoLeitura
        Dim repositorioAutoLeitura As New repositorioAutoLeitura

        Try


            objAutoLeitura.ZONA = txtZona.Text
            objAutoLeitura.LIVRO = txtLivro.Text
            objAutoLeitura.CONTA = txtConta.Text
            objAutoLeitura.CONS_ID = vConsId
            objAutoLeitura.UNID_ID = vUnidId
            objAutoLeitura.DT_LEITURA = dtLeitura.Value
            objAutoLeitura.VL_LEITURA = Convert.ToDouble(txtLeitura.Text)


            repositorioAutoLeitura.Insert(objAutoLeitura)

            Return True
        Catch ex As Exception
            Return False
        End Try

    End Function

    Private Function lUpdate() As Boolean

        Dim objAutoLeitura As New entidadeAutoLeitura
        Dim repositorioAutoLeitura As New repositorioAutoLeitura

        Try


            objAutoLeitura.ZONA = txtZona.Text
            objAutoLeitura.LIVRO = txtLivro.Text
            objAutoLeitura.CONTA = txtConta.Text
            objAutoLeitura.CONS_ID = vConsId
            objAutoLeitura.UNID_ID = vUnidId
            objAutoLeitura.DT_LEITURA = dtLeitura.Value
            objAutoLeitura.VL_LEITURA = Convert.ToDouble(txtLeitura.Text)
            objAutoLeitura.ID = vCodigo

            repositorioAutoLeitura.Update(objAutoLeitura)

            Return True
        Catch ex As Exception
            Return False
        End Try

    End Function

    Private Function lDelete(ByRef objAutoLeitura As entidadeAutoLeitura) As Boolean
        Dim repositorioAutoLeitura As New repositorioAutoLeitura
        Try

            repositorioAutoLeitura.Delete(objAutoLeitura)

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


#End Region

End Class