Option Strict Off
Option Explicit On

Imports fatd_faturamento.BLL.Repositorio
Imports fatd_faturamento.ENTIDADE

Friend Class frmCadastroMensagens
    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

#Region "Propriedades"

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

        Try

            habDesabTudo(False)

            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 lvwMensagens_ColumnClick(ByVal eventSender As System.Object, ByVal eventArgs As System.Windows.Forms.ColumnClickEventArgs) Handles lvwMensagens.ColumnClick

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

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

        Try

            If lvwMensagens.Items.Count > 0 Then

                vNew = False
                lEdit(lvwMensagens.FocusedItem.Name.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 txtDia_Enter(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles txtDia.Enter


        Try

            With Me.txtDia
                .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 txtMes_Enter(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles txtMes.Enter


        Try

            With Me.txtDia
                .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 txtTitulo_Enter(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles txtTitulo.Enter


        Try

            With Me.txtTitulo
                .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 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 btSalvar_Click(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles btSalvar.Click

        Dim vlintMes As Integer
        Dim vlintDia As Integer

        Try

            vlintMes = Convert.ToInt32(Me.txtMes.Text)
            vlintDia = Convert.ToInt32(Me.txtDia.Text)

            If vlintMes >= 1 And vlintMes <= 12 Then

                If vlintDia >= 1 And vlintDia <= 31 Then

                    If vlintMes = 2 And vlintDia > 29 Then
                        MessageBox.Show("Dia inválido para o mês de fevereiro", "Informação", MessageBoxButtons.OK, MessageBoxIcon.Information)
                        Call Me.txtDia.Focus()
                    Else

                        If vNew = True Then

                            If lInsert() Then
                                MessageBox.Show("Mensagem criada com sucesso!", "Informação", MessageBoxButtons.OK, MessageBoxIcon.Information)
                                lClear()
                                habDesabTudo(False)
                                lAtualizaList()
                            Else
                                MessageBox.Show("Mensagem não pode ser criada!", "Informação", MessageBoxButtons.OK, MessageBoxIcon.Information)
                                Exit Sub
                            End If

                        Else

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

                        End If

                    End If
                Else
                    MessageBox.Show("Dia esta inválido.", "Informação", MessageBoxButtons.OK, MessageBoxIcon.Information)
                    Call Me.txtDia.Focus()
                End If
            Else
                MessageBox.Show("Mês esta inválido.", "Informação", MessageBoxButtons.OK, MessageBoxIcon.Information)
                Call Me.txtMes.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 btExcluir_Click(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles btExcluir.Click

        Dim objMensagem As New entidadeMensagem


        Try

            If txtId.Text = String.Empty Then
                vResp = MessageBox.Show("Favor selecionar um item da lista", "Informação", MessageBoxButtons.OK, MessageBoxIcon.Information)
            Else


                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

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

                    If Not lDelete(objMensagem) Then
                        MessageBox.Show("Mensagem não pode ser excluído!", "Confirmação de Exclusão", MessageBoxButtons.OK, MessageBoxIcon.Information)
                        Exit Sub
                    Else
                        MessageBox.Show("Mensagem excluído com sucesso!", "Confirmação de Exclusão", MessageBoxButtons.OK, MessageBoxIcon.Information)
                        lClear()
                        lAtualizaList()
                    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 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 btEditar_Click(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles btEditar.Click

        Try

            lEdit()

        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 eventSender As System.Object, ByVal eventArgs 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 frmCadMensagens_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.Return Then
                If VB6.GetActiveControl().Name <> "txtDescricao" Then
                    TabEnter(KeyAscii, eventArgs)
                End If
            ElseIf KeyAscii = System.Windows.Forms.Keys.Escape Then
                Call btFechar_Click(btFechar, 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

#End Region

#Region "Métodos"

    Private Sub lAtualizaList()

        Dim objMensagem As entidadeMensagem

        Try
            CarregarGrid(objMensagem)

            If lvwMensagens.Items.Count <> 0 Then

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

            End If

        Catch ex As Exception
            Exit Sub
        End Try

    End Sub

    Public Sub PrepararListView()

        Try

            lvwMensagens.Items.Clear()
            lvwMensagens.Columns.Clear()
            lvwMensagens.Columns.Add(String.Empty, "Código", 50)
            lvwMensagens.Columns.Add(String.Empty, "Dia", 100)
            lvwMensagens.Columns.Add(String.Empty, "Mês", 100)
            lvwMensagens.Columns.Add(String.Empty, "Título", 100)
            lvwMensagens.Columns.Add(String.Empty, "Mensagem", 100)

        Catch ex As Exception
            Exit Sub
        End Try

    End Sub

    Public Sub CarregarGrid(ByRef objMensagem As entidadeMensagem)

        Try
            PrepararListView()
            For Each objMensagemFor As entidadeMensagem In New repositorioMensagem().Select(objMensagem)
                AddListItem(mItem, objMensagemFor)
            Next
        Catch ex As Exception
            Exit Sub
        End Try

    End Sub

    Private Sub AddListItem(ByRef xItem As System.Windows.Forms.ListViewItem, ByRef objMensagem As entidadeMensagem)

        Try

            xItem = lvwMensagens.Items.Add(objMensagem.ID.ToString(), objMensagem.ID.ToString(), String.Empty)

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

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

            If (String.IsNullOrEmpty(objMensagem.TITULO)) Then
                xItem.SubItems.Add(Space(1))
            Else
                xItem.SubItems.Add(objMensagem.TITULO)
            End If

            If (String.IsNullOrEmpty(objMensagem.DESCRICAO)) Then
                xItem.SubItems.Add(Space(1))
            Else
                xItem.SubItems.Add(objMensagem.DESCRICAO)
            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 lvwMensagens.Items

                If Item.Name = vCodigo Then

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

                    'Para pegar os SubItems e so fazer o seguinte
                    txtDia.Text = IIf(String.IsNullOrEmpty((Item.SubItems(1).Text)), " ", (Item.SubItems(1).Text))
                    txtMes.Text = IIf(String.IsNullOrEmpty((Item.SubItems(2).Text)), " ", (Item.SubItems(2).Text))
                    txtTitulo.Text = IIf(String.IsNullOrEmpty((Item.SubItems(3).Text)), " ", (Item.SubItems(3).Text))
                    txtDescricao.Text = IIf(String.IsNullOrEmpty((Item.SubItems(4).Text)), " ", (Item.SubItems(4).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()

            habDesabTudo(True)

        Catch ex As Exception
            Exit Sub
        End Try

    End Sub

    Private Sub lEdit()

        Try

            vNew = False
            habDesabTudo(True)
            txtDia.Focus()

        Catch ex As Exception
            Exit Sub
        End Try

    End Sub

    Private Sub lClear()

        Try
            Me.txtId.Text = String.Empty
            Me.txtDia.Text = Convert.ToString(Date.Now.Day)
            Me.txtMes.Text = Convert.ToString(Date.Now.Month)
            Me.txtTitulo.Text = String.Empty
            Me.txtDescricao.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 habDesabTudo(ByRef forma As Boolean)

        Try

            Me.txtDia.Enabled = forma
            Me.txtMes.Enabled = forma
            Me.txtTitulo.Enabled = forma
            Me.txtDescricao.Enabled = forma

        Catch ex As Exception
            Exit Sub
        End Try

    End Sub

    Private Function lInsert() As Boolean

        Dim objMensagem As New entidadeMensagem
        Dim repositorioMensagem As New repositorioMensagem

        Try


            objMensagem.DIA = Convert.ToInt32(Trim(IIf(String.IsNullOrEmpty(txtDia.Text), " ", txtDia.Text)))
            objMensagem.MES = Convert.ToInt32(Trim(IIf(String.IsNullOrEmpty(txtMes.Text), " ", txtMes.Text)))
            objMensagem.TITULO = Trim(IIf(String.IsNullOrEmpty((txtTitulo.Text)), " ", txtTitulo.Text))
            objMensagem.DESCRICAO = Trim(IIf(String.IsNullOrEmpty((txtDescricao.Text)), " ", txtDescricao.Text))


            repositorioMensagem.Insert(objMensagem)

            Return True
        Catch ex As Exception
            Return False
        End Try

    End Function

    Private Function lUpdate() As Boolean

        Dim objMensagem As New entidadeMensagem
        Dim repositorioMensagem As New repositorioMensagem


        Try




            objMensagem.ID = Convert.ToInt32(Trim(IIf(String.IsNullOrEmpty((txtId.Text)), " ", txtId.Text)))
            objMensagem.DIA = Convert.ToInt32(Trim(IIf(String.IsNullOrEmpty(txtDia.Text), " ", txtDia.Text)))
            objMensagem.MES = Convert.ToInt32(Trim(IIf(String.IsNullOrEmpty(txtMes.Text), " ", txtMes.Text)))
            objMensagem.TITULO = Trim(IIf(String.IsNullOrEmpty((txtTitulo.Text)), " ", txtTitulo.Text))
            objMensagem.DESCRICAO = Trim(IIf(String.IsNullOrEmpty((txtDescricao.Text)), " ", txtDescricao.Text))

            repositorioMensagem.Update(objMensagem)

            Return True
        Catch ex As Exception
            Return False
        End Try

    End Function

    Private Function lDelete(ByRef objMensagem As entidadeMensagem) As Boolean
        Dim repositorioMensagem As New repositorioMensagem
        Try

            repositorioMensagem.Delete(objMensagem)

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

#End Region



End Class