Imports fatd_faturamento.BLL.Repositorio
Imports fatd_faturamento.ENTIDADE
Public Class frmMySqlBackUp

#Region "Propriedades"

    Private Sub frmMySqlBackUp_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        Try

            lAtualizaListaSchemaMySql()

        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 frmMySqlBackUp_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown

        Try

            If e.Control Then
                Select Case e.KeyCode

                End Select
            Else
                Select Case e.KeyCode
                    Case Keys.Escape
                        e.SuppressKeyPress = True
                        Me.btFechar.PerformClick()
                End Select
            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 chkSelTodas_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles chkSelTodas.CheckedChanged

        Try

            If chkSelTodas.Checked Then
                checkAllListBoxItens(lstSchema)
            Else
                unCheckAllListBoxItens(lstSchema)
            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 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 btBackUp_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btBackUp.Click

        Try

            If lstSchema.CheckedItems.Count > 0 Then
                lBackupBD()
            Else
                MessageBox.Show("Você precisa selecionar pelo menos uma tabela!", "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 frmMySqlBackUp_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 lClose()

        Try
            Me.Close()

        Catch ex As Exception
            Exit Sub
        End Try

    End Sub

    Private Sub lBackupBD()

        Dim comando As String
        Dim cont As Integer
        Dim arquivo As String


        Try

            '[Verifica se o arquivo mysqldump.exe existe na pasta do sistema]
            If Not IO.File.Exists("mysqldump.exe") Then
                MessageBox.Show("O arquivo `mysqldump.exe` não foi encontrado na pasta do sistema." & vbCrLf & vbCrLf & "Sem esse arquivo é impossível realizar o back-up do banco de dados.", "Informação", MessageBoxButtons.OK, MessageBoxIcon.Information)
                Exit Sub
            End If

            '[Solicita que o usuário informe o caminho onde o dump será gravado]
            openDialog.ShowDialog()

            '[Verifica se o usuário cancelou a seleção da pasta de destino]
            If openDialog.SelectedPath = String.Empty Then
                Exit Sub
            End If

            arquivo = openDialog.SelectedPath & "\" & UCase(vstrNomeEmpresa) & " " & Format(Now, "yyyyMMdd HHmmss") & ".sql"

            'Início da montagem da linha de comando
            comando = "mysqldump.exe -h " & vMySqlHostName & " -u " & vMySqlUserName & " -p" & vMySqlPassWord & " " & vMySqlDataBase & " "

            For cont = 0 To lstSchema.CheckedItems.Count - 1
                comando = comando & lstSchema.CheckedItems.Item(cont)

                If cont < lstSchema.CheckedItems.Count - 1 Then
                    comando = comando & " "
                End If
            Next cont

            comando = comando & " --result-file=""" & arquivo & """"

            '[Chama o aplicativo externo passando a linha de comando como parâmetro]
            Shell(comando, AppWinStyle.Hide, True)

            '[Confirma a execução do back-up]
            MessageBox.Show("Back-up realizado com sucesso!", "Informação", MessageBoxButtons.OK, MessageBoxIcon.Information)

        Catch ex As Exception
            Exit Sub
        End Try

    End Sub

    Private Sub lAtualizaListaSchemaMySql()

        Dim vlist

        Dim objConsultaAlteracoes As New entidadeConsultaAlteracoes
        Dim repositorioConsultaAlteracoes As New repositorioConsultaAlteracoes

        Try

            lstSchema.Items.Clear()

            objConsultaAlteracoes.TABLE_SCHEMA = vMySqlDataBase
            objConsultaAlteracoes.TABLE_NAME = String.Empty

            vlist = repositorioConsultaAlteracoes.Select(objConsultaAlteracoes)

            If vlist.Count > 0 Then

                For Each objConsultaAlteracoesFor As entidadeConsultaAlteracoes In vlist
                    lstSchema.Items.Add(objConsultaAlteracoesFor.TABLE_NAME)
                    lstSchema.SetItemChecked(lstSchema.Items.Count - 1, True)
                Next

            End If

        Catch ex As Exception
            Exit Sub
        End Try

    End Sub

#End Region

End Class