Option Strict Off
Option Explicit On

Imports fatd_faturamento.BLL.Repositorio
Imports fatd_faturamento.ENTIDADE

Friend Class frmCadastroPrecosMae
    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 vCodOld As String


#Region "Propriedades"

    Private Sub frmCadPrecosMae_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 lvwPrecosMae_ColumnClick(ByVal eventSender As System.Object, ByVal eventArgs As System.Windows.Forms.ColumnClickEventArgs) Handles lvwPrecosMae.ColumnClick

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

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

        Try

            If lvwPrecosMae.Items.Count > 0 Then

                habDesabTudo(False)

                vNew = False
                lEdit(lvwPrecosMae.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 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 btExcluir_Click(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles btExcluir.Click

        Dim objPrecoMae As New entidadePrecoMae


        Try

            If lvwPrecosMae.Items.Count > 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

                    objPrecoMae.REFERENCIA = Convert.ToDateTime(dtpData.Value)

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


                ElseIf vResp = DialogResult.Cancel Then
                    Exit Sub
                End If

            Else
                MessageBox.Show("É necessário selecionar um registro!", "Informação", MessageBoxButtons.OK, MessageBoxIcon.Information)
            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 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 btSalvar_Click(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles btSalvar.Click


        Try

            If vNew = True Then

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

            Else

                If lUpdate() Then
                    MessageBox.Show("Preço Mae atualizada com sucesso!", "Informação", MessageBoxButtons.OK, MessageBoxIcon.Information)
                    frmCadPrecosMae_Load(Me, New System.EventArgs())
                Else
                    MessageBox.Show("Preço Mae 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 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 txtValorMenor_Enter(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles txtValorMenor.Enter

        Try

            With Me.txtValorMenor
                .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 txtValorMaior_Enter(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles txtValorMaior.Enter


        Try

            With Me.txtValorMaior
                .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 frmCadPrecosMae_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
                TabEnter(KeyAscii, eventArgs)
            ElseIf KeyAscii = System.Windows.Forms.Keys.Escape Then
                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 objPrecoMae As New entidadePrecoMae

        Try
            CarregarGrid(objPrecoMae)

            If lvwPrecosMae.Items.Count <> 0 Then

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

            End If

        Catch ex As Exception
            Exit Sub
        End Try

    End Sub

    Public Sub PrepararListView()

        Try

            lvwPrecosMae.Items.Clear()
            lvwPrecosMae.Columns.Clear()
            lvwPrecosMae.Columns.Add(String.Empty, "Referência", 75)
            lvwPrecosMae.Columns.Add(String.Empty, "Menor", 100)
            lvwPrecosMae.Columns.Add(String.Empty, "Maior", 100)

        Catch ex As Exception
            Exit Sub
        End Try

    End Sub

    Public Sub CarregarGrid(ByRef objPrecoMae As entidadePrecoMae)

        Try
            PrepararListView()
            For Each objPrecoMaeFor As entidadePrecoMae In New repositorioPrecoMae().Select(objPrecoMae)
                AddListItem(mItem, objPrecoMaeFor)
            Next
        Catch ex As Exception
            Exit Sub
        End Try

    End Sub

    Private Sub AddListItem(ByRef xItem As System.Windows.Forms.ListViewItem, ByRef objPrecoMae As entidadePrecoMae)

        Try

            xItem = lvwPrecosMae.Items.Add(objPrecoMae.REFERENCIA.ToString(), objPrecoMae.REFERENCIA.ToString(), String.Empty)

            If (String.IsNullOrEmpty(Convert.ToDouble(objPrecoMae.VALORMENOR))) Then
                xItem.SubItems.Add(Space(1))
            Else
                xItem.SubItems.Add(objPrecoMae.VALORMENOR)
            End If

            If (String.IsNullOrEmpty(Convert.ToDouble(objPrecoMae.VALORMAIOR))) Then
                xItem.SubItems.Add(Space(1))
            Else
                xItem.SubItems.Add(objPrecoMae.VALORMAIOR)
            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 lvwPrecosMae.Items

                If Item.Name = vCodigo Then

                    'Pega a Coluna 0
                    dtpData.Value = IIf(String.IsNullOrEmpty((Item.Text)), Date.Now, (Item.Text))

                    'Para pegar os SubItems e so fazer o seguinte
                    txtValorMenor.Text = IIf(String.IsNullOrEmpty((Item.SubItems(1).Text)), "0", (Item.SubItems(1).Text))
                    txtValorMaior.Text = IIf(String.IsNullOrEmpty((Item.SubItems(2).Text)), "0", (Item.SubItems(2).Text))
                    vCodOld = IIf(String.IsNullOrEmpty((Item.Text)), " ", (Item.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

            habDesabTudo(True)
            lClear()

        Catch ex As Exception
            Exit Sub
        End Try

    End Sub

    Private Sub lClear()

        Try

            Me.txtValorMaior.Text = "0,00"
            Me.txtValorMenor.Text = "0,00"
            Me.dtpData.Value = Convert.ToDateTime("01/" & Date.Now.Month.ToString() & Date.Now.Year.ToString())

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

        Try

            vNew = False

            habDesabTudo(True)
            Me.dtpData.Focus()

        Catch ex As Exception
            Exit Sub
        End Try

    End Sub

    Private Sub habDesabTudo(ByRef forma As Boolean)


        Try
            Me.txtValorMenor.Enabled = forma
            Me.txtValorMaior.Enabled = forma
            Me.dtpData.Enabled = forma
        Catch ex As Exception
            Exit Sub
        End Try


    End Sub

    Private Function lInsert() As Boolean

        Dim objPrecoMae As New entidadePrecoMae
        Dim repositorioPrecoMae As New repositorioPrecoMae

        Try

            objPrecoMae.REFERENCIA = Convert.ToDateTime(Trim(IIf(String.IsNullOrEmpty((dtpData.Value)), Date.Now, dtpData.Value)))
            objPrecoMae.VALORMENOR = Convert.ToDouble(Trim(IIf(String.IsNullOrEmpty((txtValorMenor.Text)), "0", txtValorMenor.Text)))
            objPrecoMae.VALORMAIOR = Convert.ToDouble(Trim(IIf(String.IsNullOrEmpty(txtValorMaior.Text), "0", txtValorMaior.Text)))


            repositorioPrecoMae.Insert(objPrecoMae)

            Return True
        Catch ex As Exception
            Return False
        End Try

    End Function

    Private Function lUpdate() As Boolean

        Dim objPrecoMae As New entidadePrecoMae
        Dim repositorioPrecoMae As New repositorioPrecoMae


        Try


            objPrecoMae.REFERENCIA_OLD = Convert.ToDateTime(Trim(IIf(String.IsNullOrEmpty((dtpData.Value)), Date.Now, dtpData.Value)))
            objPrecoMae.REFERENCIA = Convert.ToDateTime(Trim(IIf(String.IsNullOrEmpty((dtpData.Value)), Date.Now, dtpData.Value)))
            objPrecoMae.VALORMENOR = Convert.ToDouble(Trim(IIf(String.IsNullOrEmpty((txtValorMenor.Text)), "0", txtValorMenor.Text)))
            objPrecoMae.VALORMAIOR = Convert.ToDouble(Trim(IIf(String.IsNullOrEmpty(txtValorMaior.Text), "0", txtValorMaior.Text)))

            repositorioPrecoMae.Update(objPrecoMae)

            Return True
        Catch ex As Exception
            Return False
        End Try

    End Function

    Private Function lDelete(ByRef objPrecoMae As entidadePrecoMae) As Boolean
        Dim repositorioPrecoMae As New repositorioPrecoMae
        Try

            repositorioPrecoMae.Delete(objPrecoMae)

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






#End Region

End Class