Imports System.Configuration
Imports System.Text
Imports Newtonsoft.Json
Imports fatd_faturamento.BLL.Repositorio
Imports fatd_faturamento.BLL.RegraNegocio
Imports fatd_faturamento.ENTIDADE

Public Class frmCadastroLeituristas
    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 frmCadastroLeituristas_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        Try

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

            txtCodigoFinal.Focus()
            vNew = True

        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 objLeiturista As New entidadeLeiturista
        Dim repositorioLeiturista As New repositorioLeiturista

        Dim vlist

        Try

            '[Verifica se o código do leiturista foi digitado]
            If Me.txtCodigoFinal.Text.Trim = String.Empty Then
                MessageBox.Show("Por favor, digite o codigo do leiturista!", "Informação", MessageBoxButtons.OK, MessageBoxIcon.Information)
                Me.txtCodigoFinal.Select()
                Exit Sub
            End If

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

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


            '[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

                    If lInsert() Then

                        objLeiturista.CodigoLeiturista = txtCodigoFinal.Text.ToUpper()

                        vlist = repositorioLeiturista.Select(objLeiturista)

                        If vlist.Count > 0 Then

                            For Each objLeituristaFor As entidadeLeiturista In vlist
                                Me.txtCodigoPrincipal.Text = CStr(CInt(IIf(IsDBNull(objLeituristaFor.IdLeiturista), 0, objLeituristaFor.IdLeiturista)))
                            Next

                            SetaCodigo("leiturista", CInt(Me.txtCodigoPrincipal.Text))

                        End If

                        MessageBox.Show("Leiturista criado com sucesso!", "Informação", MessageBoxButtons.OK, MessageBoxIcon.Information)
                        lClear()
                        frmCadastroLeituristas_Load(Me, New System.EventArgs())
                    Else
                        MessageBox.Show("Leiturista não pode ser criado!", "Informação", MessageBoxButtons.OK, MessageBoxIcon.Information)
                        Exit Sub
                    End If


            Else

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

                    If lUpdate() Then

                        SetaCodigo("leiturista", CInt(Me.txtCodigoPrincipal.Text))

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

                    Else
                        MessageBox.Show("Leiturista 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("leiturista", "Pesquisar Leituristas", 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 btExcluir_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btExcluir.Click

        Dim objLeiturista As New entidadeLeiturista

        Try

            If Trim(Me.txtCodigoPrincipal.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

                    objLeiturista.IdLeiturista = Convert.ToInt32(txtCodigoPrincipal.Text)

                    If Not lDelete(objLeiturista) Then

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

                    Else
                        MessageBox.Show("Leiturista excluído com sucesso!", "Confirmação de Exclusão", MessageBoxButtons.OK, MessageBoxIcon.Information)
                        lClear()
                        frmCadastroLeituristas_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_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 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 objLeiturista As New entidadeLeiturista
        Dim repositorioLeiturista As New repositorioLeiturista


        Try

            If astrTabela.ToUpper() = "LEITURISTA" Then

                objLeiturista.IdLeiturista = alngId_A

                vlist = repositorioLeiturista.Select_1(objLeiturista)

                If vlist.Count > 0 Then

                    For Each objLeituristaFor As entidadeLeiturista In vlist

                        vCodigo = CStr(IIf(IsDBNull(objLeituristaFor.IdLeiturista), 0, objLeituristaFor.IdLeiturista))

                        Me.txtCodigoPrincipal.Text = IIf(IsDBNull(Strings.Format(objLeituristaFor.IdLeiturista, "00000")), 0, Strings.Format(objLeituristaFor.IdLeiturista, "00000"))
                        Me.txtCodigoFinal.Text = IIf(IsDBNull(objLeituristaFor.CodigoLeiturista), String.Empty, objLeituristaFor.CodigoLeiturista)
                        Me.txtNomeCompleto.Text = IIf(IsDBNull(objLeituristaFor.NomeLeiturista), String.Empty, objLeituristaFor.NomeLeiturista)
                        Me.txtObservacao.Text = IIf(IsDBNull(objLeituristaFor.ObservacaoLeiturista), String.Empty, objLeituristaFor.ObservacaoLeiturista)


                    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.txtCodigoFinal.Text = String.Empty
            Me.txtNomeCompleto.Text = String.Empty
            Me.txtObservacao.Text = String.Empty

            Me.txtCodigoFinal.Focus()

        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]
            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 objLeiturista As New entidadeLeiturista
        Dim repositorioLeiturista As New repositorioLeiturista

        Try

            objLeiturista.CodigoLeiturista = Convert.ToString(Trim(IIf(String.IsNullOrEmpty((Me.txtCodigoFinal.Text)), String.Empty, Me.txtCodigoFinal.Text)))
            objLeiturista.NomeLeiturista = Convert.ToString(Trim(IIf(String.IsNullOrEmpty((Me.txtNomeCompleto.Text)), String.Empty, Me.txtNomeCompleto.Text)))
            objLeiturista.ObservacaoLeiturista = Convert.ToString(Trim(IIf(String.IsNullOrEmpty((Me.txtObservacao.Text)), String.Empty, Me.txtObservacao.Text)))

            repositorioLeiturista.Insert(objLeiturista)

            Return True

        Catch ex As Exception
            Return False
        End Try

    End Function

    Private Function lUpdate() As Boolean

        Dim objLeiturista As New entidadeLeiturista
        Dim repositorioLeiturista As New repositorioLeiturista


        Try

            objLeiturista.IdLeiturista = Convert.ToInt32(Trim(IIf(String.IsNullOrEmpty((vCodigo)), "0", vCodigo)))
            objLeiturista.CodigoLeiturista = Convert.ToString(Trim(IIf(String.IsNullOrEmpty((Me.txtCodigoFinal.Text)), String.Empty, Me.txtCodigoFinal.Text)))
            objLeiturista.NomeLeiturista = Convert.ToString(Trim(IIf(String.IsNullOrEmpty((Me.txtNomeCompleto.Text)), String.Empty, Me.txtNomeCompleto.Text)))
            objLeiturista.ObservacaoLeiturista = Convert.ToString(Trim(IIf(String.IsNullOrEmpty((Me.txtObservacao.Text)), String.Empty, Me.txtObservacao.Text)))


            repositorioLeiturista.Update(objLeiturista)

            Return True

        Catch ex As Exception
            Return False
        End Try

    End Function

    Private Function lDelete(ByRef objLeiturista As entidadeLeiturista) As Boolean

        Dim repositorioLeiturista As New repositorioLeiturista

        Try

            repositorioLeiturista.Delete(objLeiturista)

            Return True

        Catch ex As Exception
            Return False
        End Try

    End Function


#End Region


End Class