Option Strict Off
Option Explicit On

Imports fatd_faturamento.BLL.Repositorio
Imports fatd_faturamento.ENTIDADE

Friend Class frmCadastroEquipamentosCargas
    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 frmCadastroCargas_Load(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles MyBase.Load

        Try
            If Not vfrmOld Is Nothing Then

                If vfrmOld.Name = "frmCargaInstalada" Then
                    vfrmOld.Enabled = False
                End If

            End If
            IniciaCadastroCargas()

        Catch ex As Exception
            MessageBox.Show("Ocorreu o Erro: " & Err.Description & " - Rotina: FrmCadastroBairros_Load" & "", "Aviso de Erro", MessageBoxButtons.OK, MessageBoxIcon.Error)
            Exit Sub
        End Try

    End Sub

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

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

        Try
            lvwCargasEquipamentos.ListViewItemSorter = New ListViewItemComparer(eventArgs.Column)
            lvwCargasEquipamentos.Sort()
        Catch ex As Exception
            MessageBox.Show("Ocorreu o Erro: " & Err.Description & " - Rotina: lvwCargasEquipamentos_ColumnClick" & "", "Aviso de Erro", MessageBoxButtons.OK, MessageBoxIcon.Error)
            Exit Sub
        End Try

    End Sub

    Private Sub lvwCargasEquipamentos_DoubleClick(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles lvwCargasEquipamentos.DoubleClick

        Try
            If lvwCargasEquipamentos.Items.Count > 0 Then

                Me.cmdNovo.Enabled = True
                Me.cmdEditar.Enabled = False
                Me.cmdExcluir.Enabled = True
                vNew = False
                lEdit(lvwCargasEquipamentos.FocusedItem.Name.Trim())
                SetaFrameEquipamento(True)
                txtEquipamento.Focus()

            End If
        Catch ex As Exception
            MessageBox.Show("Ocorreu o Erro: " & Err.Description & " - Rotina: lvwCargasEquipamentos_DoubleClick" & "", "Aviso de 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 o Erro: " & Err.Description & " - Rotina: cmdNovo_Click" & "", "Aviso de Erro", MessageBoxButtons.OK, MessageBoxIcon.Error)
            Exit Sub
        End Try

    End Sub

    Private Sub cmdEditar_Click(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles cmdEditar.Click

        Try

            lEdit()

        Catch ex As Exception
            MessageBox.Show("Ocorreu o Erro: " & Err.Description & " - Rotina: cmdEditar_Click" & "", "Aviso de 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 Trim(txtEquipamento.Text) = "" Then
                MessageBox.Show("Por favor, digite o nome do equipamento.", "Informação", MessageBoxButtons.OK, MessageBoxIcon.Information)
                txtEquipamento.Focus()
            ElseIf Trim(txtCarga.Text) = "" Then
                MessageBox.Show("Por favor, digite a carga do equipamento.", "Informação", MessageBoxButtons.OK, MessageBoxIcon.Information)
                txtCarga.Focus()
            Else

                If vNew = True Then

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

                Else

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

                End If
            End If

        Catch ex As Exception
            MessageBox.Show("Ocorreu o Erro: " & Err.Description & " - Rotina: cmdSalvar_Click" & "", "Aviso de Erro", MessageBoxButtons.OK, MessageBoxIcon.Error)
            Exit Sub
        End Try

    End Sub

    Private Sub cmdCancelar_Click(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles cmdCancelar.Click

        Try

            lCancel()

        Catch ex As Exception
            MessageBox.Show("Ocorreu o Erro: " & Err.Description & " - Rotina: cmdCancelar_Click" & "", "Aviso de 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 objCargaEquipamento As New entidadeCargaEquipamento


        Try

            vResp = MessageBox.Show("Deseja Realmente Excluir a Carga de código: " & txtCodigo.Text & " ?", "Confirmação de Exclusão", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question)

            If vResp = DialogResult.Yes Then

                objCargaEquipamento.COD_EQUIPAMENTO = Convert.ToInt32(txtCodigo.Text)

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


            ElseIf vResp = DialogResult.Cancel Then
                Exit Sub
            End If


        Catch ex As Exception
            MessageBox.Show("Ocorreu o Erro: " & Err.Description & " - Rotina: cmdExcluir_Click" & "", "Aviso de Erro", MessageBoxButtons.OK, MessageBoxIcon.Error)
            Exit Sub
        End Try


    End Sub

    Private Sub cmdFechar_Click(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles cmdFechar.Click

        Try

            lClose()

        Catch ex As Exception
            MessageBox.Show("Ocorreu o Erro: " & Err.Description & " - Rotina: cmdFechar_Click" & "", "Aviso de Erro", MessageBoxButtons.OK, MessageBoxIcon.Error)
            Exit Sub
        End Try

    End Sub

    Private Sub frmCadastroCargas_FormClosed(ByVal eventSender As System.Object, ByVal eventArgs As System.Windows.Forms.FormClosedEventArgs) Handles Me.FormClosed

        Try
            If Not vfrmOld Is Nothing Then

                If vfrmOld.Name = "frmCargaInstalada" Then
                    vfrmOld.Enabled = True
                    vfrmOld.RetornoEquip()
                End If

            End If

        Catch ex As Exception
            MessageBox.Show("Ocorreu o Erro: " & Err.Description & " - Rotina: frmCadastroCargas_FormClosed" & "", "Aviso de Erro", MessageBoxButtons.OK, MessageBoxIcon.Error)
            Exit Sub
        End Try


    End Sub

    Private Sub frmCadastroCargas_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

                If frameDados1.Visible = True Then
                    cmdCancelar_Click(cmdCancelar, New System.EventArgs())
                Else
                    cmdFechar_Click(cmdFechar, New System.EventArgs())
                End If

            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 o Erro: " & Err.Description & " - Rotina: frmCadastroCargas_KeyPress" & "", "Aviso de Erro", MessageBoxButtons.OK, MessageBoxIcon.Error)
            Exit Sub
        End Try
    End Sub

    Private Sub txtCarga_Enter(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles txtCarga.Enter


        Try

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

        Catch ex As Exception
            MessageBox.Show("Ocorreu o Erro: " & Err.Description & " - Rotina: txtCarga_Enter" & "", "Aviso de Erro", MessageBoxButtons.OK, MessageBoxIcon.Error)
            Exit Sub
        End Try

    End Sub

    Private Sub txtCarga_KeyPress(ByVal eventSender As System.Object, ByVal eventArgs As System.Windows.Forms.KeyPressEventArgs) Handles txtCarga.KeyPress

        Dim KeyAscii As Short = Asc(eventArgs.KeyChar)


        Try

            If KeyAscii <> System.Windows.Forms.Keys.Back And (KeyAscii < System.Windows.Forms.Keys.D0 Or KeyAscii > System.Windows.Forms.Keys.D9) Then
                KeyAscii = 0
            End If

            eventArgs.KeyChar = Chr(KeyAscii)

            If KeyAscii = 0 Then
                eventArgs.Handled = True
            End If

        Catch ex As Exception
            MessageBox.Show("Ocorreu o Erro: " & Err.Description & " - Rotina: txtCarga_KeyPress" & "", "Aviso de Erro", MessageBoxButtons.OK, MessageBoxIcon.Error)
            Exit Sub
        End Try

    End Sub

    Private Sub txtEquipamento_Enter(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles txtEquipamento.Enter


        Try

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

        Catch ex As Exception
            MessageBox.Show("Ocorreu o Erro: " & Err.Description & " - Rotina: txtEquipamento_Enter" & "", "Aviso de Erro", MessageBoxButtons.OK, MessageBoxIcon.Error)
            Exit Sub
        End Try

    End Sub

#End Region

#Region "Métodos"

    Private Sub lAtualizaList()

        Dim objCargaEquipamento As entidadeCargaEquipamento

        Try
            CarregarGrid(objCargaEquipamento)

            If lvwCargasEquipamentos.Items.Count <> 0 Then

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

            End If

        Catch ex As Exception
            MessageBox.Show("Ocorreu o Erro: " & Err.Description & " - Rotina: lAtualizaList" & "", "Aviso de Erro", MessageBoxButtons.OK, MessageBoxIcon.Error)
            Exit Sub
        End Try

    End Sub

    Public Sub PrepararListView()

        Try

            lvwCargasEquipamentos.Items.Clear()
            lvwCargasEquipamentos.Columns.Clear()
            lvwCargasEquipamentos.Columns.Add(String.Empty, "Código", 50)
            lvwCargasEquipamentos.Columns.Add(String.Empty, "Equipamento", 100)
            lvwCargasEquipamentos.Columns.Add(String.Empty, "Carga (W)", 100)

        Catch ex As Exception
            MessageBox.Show("Ocorreu o Erro: " & Err.Description & " - Rotina: PrepararListView" & "", "Aviso de Erro", MessageBoxButtons.OK, MessageBoxIcon.Error)
            Exit Sub
        End Try

    End Sub

    Public Sub CarregarGrid(ByRef objCargaEquipamento As entidadeCargaEquipamento)

        Try
            PrepararListView()
            For Each objCargaEquipamentoFor As entidadeCargaEquipamento In New repositorioCargaEquipamento().Select(objCargaEquipamento)
                AddListItem(mItem, objCargaEquipamentoFor)
            Next
        Catch ex As Exception
            MessageBox.Show("Ocorreu o Erro: " & Err.Description & " - Rotina: CarregarGrid" & "", "Aviso de Erro", MessageBoxButtons.OK, MessageBoxIcon.Error)
            Exit Sub
        End Try

    End Sub

    Private Sub AddListItem(ByRef xItem As System.Windows.Forms.ListViewItem, ByRef objCargaEquipamento As entidadeCargaEquipamento)

        Try

            xItem = lvwCargasEquipamentos.Items.Add(objCargaEquipamento.COD_EQUIPAMENTO.ToString(), objCargaEquipamento.COD_EQUIPAMENTO.ToString(), String.Empty)

            If (String.IsNullOrEmpty(objCargaEquipamento.EQUIPAMENTO)) Then
                xItem.SubItems.Add(Space(1))
            Else
                xItem.SubItems.Add(objCargaEquipamento.EQUIPAMENTO)
            End If

            If (String.IsNullOrEmpty(objCargaEquipamento.CARGA)) Then
                xItem.SubItems.Add(Space(1))
            Else
                xItem.SubItems.Add(objCargaEquipamento.CARGA)
            End If

        Catch ex As Exception
            MessageBox.Show("Ocorreu o Erro: " & Err.Description & " - Rotina: AddListItem" & "", "Aviso de Erro", MessageBoxButtons.OK, MessageBoxIcon.Error)
            Exit Sub
        End Try

    End Sub

    Private Sub PreencherValoresList(ByRef Items As String)

        vCodigo = Items

        Dim Item As ListViewItem



        Try

            For Each Item In lvwCargasEquipamentos.Items

                If Item.Name = vCodigo Then

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

                    'Para pegar os SubItems e so fazer o seguinte
                    txtEquipamento.Text = IIf(String.IsNullOrEmpty((Item.SubItems(1).Text)), " ", (Item.SubItems(1).Text))
                    txtCarga.Text = IIf(String.IsNullOrEmpty((Item.SubItems(2).Text)), " ", (Item.SubItems(2).Text))

                End If


            Next

            Item = Nothing

        Catch ex As Exception
            MessageBox.Show("Ocorreu o Erro: " & Err.Description & " - Rotina: PreencherValoresList" & "", "Aviso de Erro", MessageBoxButtons.OK, MessageBoxIcon.Error)
            Exit Sub
        End Try

    End Sub

    Private Sub lEdit(ByRef Item As String)

        vCodigo = Item

        Try

            PreencherValoresList(vCodigo)

        Catch ex As Exception
            MessageBox.Show("Ocorreu o Erro: " & Err.Description & " - Rotina: lEdit" & "", "Aviso de Erro", MessageBoxButtons.OK, MessageBoxIcon.Error)
            Exit Sub
        End Try

    End Sub

    Private Sub lNew()

        Try

            vNew = True

            cmdNovo.Enabled = False
            cmdEditar.Enabled = False
            cmdExcluir.Enabled = False

            lClear()

            SetaFrameEquipamento(True)
            txtEquipamento.Focus()


        Catch ex As Exception
            MessageBox.Show("Ocorreu o Erro: " & Err.Description & " - Rotina: lNew" & "", "Aviso de Erro", MessageBoxButtons.OK, MessageBoxIcon.Error)
            Exit Sub
        End Try

    End Sub

    Private Sub lClear()

        Try

            txtCodigo.Text = String.Empty
            txtEquipamento.Text = String.Empty
            txtCarga.Text = String.Empty

        Catch ex As Exception
            MessageBox.Show("Ocorreu o Erro: " & Err.Description & " - Rotina: lClear" & "", "Aviso de Erro", MessageBoxButtons.OK, MessageBoxIcon.Error)
            Exit Sub
        End Try

    End Sub

    Private Sub lCancel()

        Try

            cmdNovo.Enabled = True
            cmdEditar.Enabled = True
            cmdExcluir.Enabled = True
            SetaFrameEquipamento(False)

        Catch ex As Exception
            MessageBox.Show("Ocorreu o Erro: " & Err.Description & " - Rotina: lCancel" & "", "Aviso de Erro", MessageBoxButtons.OK, MessageBoxIcon.Error)
            Exit Sub
        End Try

    End Sub

    Private Sub lEdit()

        Try

            vNew = False

            cmdNovo.Enabled = True
            cmdEditar.Enabled = False
            cmdExcluir.Enabled = True

            lEdit(lvwCargasEquipamentos.FocusedItem.Name.Trim())

            SetaFrameEquipamento(True)
            txtEquipamento.Focus()

        Catch ex As Exception
            MessageBox.Show("Ocorreu o Erro: " & Err.Description & " - Rotina: lEdit" & "", "Aviso de Erro", MessageBoxButtons.OK, MessageBoxIcon.Error)
            Exit Sub
        End Try

    End Sub

    Private Sub lClose()

        Try

            Close()

        Catch ex As Exception
            MessageBox.Show("Ocorreu o Erro: " & Err.Description & " - Rotina: lClose" & "", "Aviso de Erro", MessageBoxButtons.OK, MessageBoxIcon.Error)
            Exit Sub
        End Try

    End Sub

    Private Sub IniciaCadastroCargas()

        Try

            SetaFrameEquipamento(False)
            lAtualizaList()

            cmdNovo.Enabled = True
            cmdEditar.Enabled = False
            cmdExcluir.Enabled = False

        Catch ex As Exception
            MessageBox.Show("Ocorreu o Erro: " & Err.Description & " - Rotina: IniciaCadastroCargas" & "", "Aviso de Erro", MessageBoxButtons.OK, MessageBoxIcon.Error)
            Exit Sub
        End Try

    End Sub

    Private Sub SetaFrameEquipamento(ByVal ablnMostrar As Boolean)

        Try

            If ablnMostrar = True Then
                Me.frameDados1.Visible = True
                Me.frameDados1.Enabled = True
                Me.frame.Enabled = False
            Else
                Me.frameDados1.Visible = False
                Me.frameDados1.Enabled = False
                Me.frame.Enabled = True
            End If

        Catch ex As Exception
            MessageBox.Show("Ocorreu o Erro: " & Err.Description & " - Rotina: SetaFrameEquipamento" & "", "Aviso de Erro", MessageBoxButtons.OK, MessageBoxIcon.Error)
            Exit Sub
        End Try

    End Sub

    Private Function lInsert() As Boolean

        Dim objCargaEquipamento As New entidadeCargaEquipamento
        Dim repositorioCargaEquipamento As New repositorioCargaEquipamento

        Try

            objCargaEquipamento.EQUIPAMENTO = Trim(IIf(String.IsNullOrEmpty((txtEquipamento.Text)), " ", txtEquipamento.Text))
            objCargaEquipamento.CARGA = Convert.ToDouble(Trim(IIf(String.IsNullOrEmpty(txtCarga.Text), " ", txtCarga.Text)))


            repositorioCargaEquipamento.Insert(objCargaEquipamento)

            Return True
        Catch ex As Exception
            MessageBox.Show("Ocorreu o Erro: " & Err.Description & " - Rotina: lInsert" & "", "Aviso de Erro", MessageBoxButtons.OK, MessageBoxIcon.Error)
            Return False
            Exit Function
        End Try

    End Function

    Private Function lUpdate() As Boolean

        Dim objCargaEquipamento As New entidadeCargaEquipamento
        Dim repositorioCargaEquipamento As New repositorioCargaEquipamento

        Try

            objCargaEquipamento.COD_EQUIPAMENTO = Convert.ToInt32(Trim(IIf(String.IsNullOrEmpty((txtCodigo.Text)), " ", txtCodigo.Text)))
            objCargaEquipamento.EQUIPAMENTO = Trim(IIf(String.IsNullOrEmpty((txtEquipamento.Text)), " ", txtEquipamento.Text))
            objCargaEquipamento.CARGA = Convert.ToDouble(Trim(IIf(String.IsNullOrEmpty(txtCarga.Text), " ", txtCarga.Text)))


            repositorioCargaEquipamento.Update(objCargaEquipamento)

            Return True
        Catch ex As Exception
            MessageBox.Show("Ocorreu o Erro: " & Err.Description & " - Rotina: lUpdate" & "", "Aviso de Erro", MessageBoxButtons.OK, MessageBoxIcon.Error)
            Return False
            Exit Function
        End Try

    End Function

    Private Function lDelete(ByRef objCargaEquipamento As entidadeCargaEquipamento) As Boolean
        Dim repositorioCargaEquipamento As New repositorioCargaEquipamento
        Try

            repositorioCargaEquipamento.Delete(objCargaEquipamento)

            Return True
        Catch ex As Exception
            MessageBox.Show("Ocorreu o Erro: " & Err.Description & " - Rotina: lDelete" & "", "Aviso de Erro", MessageBoxButtons.OK, MessageBoxIcon.Error)
            Return False
            Exit Function
        End Try
    End Function

    Public Sub SetaEquipCarga(ByRef afrmQuemChama As System.Windows.Forms.Form)

        Try

            If Not vfrmOld Is Nothing Then
                vfrmOld = afrmQuemChama
            End If

        Catch ex As Exception
            MessageBox.Show("Ocorreu o Erro: " & Err.Description & " - Rotina: SetaEquipCarga" & "", "Aviso de Erro", MessageBoxButtons.OK, MessageBoxIcon.Error)
            Exit Sub
        End Try

    End Sub

#End Region


End Class