Imports CrystalDecisions.CrystalReports.Engine
Imports fatd_faturamento.ENTIDADE
Imports fatd_faturamento.BLL.Repositorio

Public Class frmRelQuantidadesConsumidores

    Private flgSender As Integer
    Private flgSender1 As Integer

    Private sNomeEmpresa As String
    Private sEnderecoEmpresa As String
    Private sCepEmpresa As String
    Private sCidadeEmpresa As String
    Private sUFempresa As String
    Private sBairroEmpresa As String
    Private sFoneEmpresa As String
    Private sWebEmpresa As String
    Private LImagem() As Byte
    Private dt As DataTable

    Private objExecAtualizaBancoDados As New entidadeAtualizaBancoDados
    Private repositorioExecAtualizaBancoDados As New repositorioAtualizaBancoDados

    Private objAtualizaBancoDados As New entidadeAtualizaBancoDados
    Private repositorioAtualizaBancoDados As New repositorioAtualizaBancoDados
    Private Sub cmd_imprimir_Click(sender As Object, e As EventArgs) Handles cmd_imprimir.Click

        Try

            If rdbUnidConsumidora.Checked AndAlso Not chkCortado.Checked AndAlso Not chkLigado.Checked AndAlso Not chkDesligado.Checked AndAlso Not chkTodos.Checked Then
                MessageBox.Show("Para realizar o Relatorio por Unidade Consumidora é necessário selecionar ao menos uma situação!", "", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
                Exit Sub
            End If

            'sCarregaDados()
            Call sDadosEmpresa(LImagem, sNomeEmpresa, sEnderecoEmpresa, sCepEmpresa, sCidadeEmpresa, sUFempresa, sBairroEmpresa, sFoneEmpresa, sWebEmpresa)

            If rdbConsumidor.Checked Then
                lPrint("rptRelTotalConsumidores")
            Else
                lPrint("rptRelTotalUnidadesConsumidoras")
            End If


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

    End Sub


    Private Sub lPrint(ByVal vNomeRPT As String)

        Dim dt As DataTable
        Dim dt_1 As DataTable
        Dim dt_2 As DataTable
        Dim dt_3 As DataTable
        Dim dc As DataColumn
        Dim ds As DataSet
        Dim lstrsql As String
        Dim lstrsqlAux As String

        Dim bytBLOBData() As Byte

        Dim vlist


        Try
            Dim rpt As New ReportDocument()

            'rptRelSampNovoBaixaRenda
            If vNomeRPT = "rptRelTotalConsumidores" Then

                dt_2 = New DataTable()
                dt_2.Columns.Add("CONSID", GetType(Integer))
                dt_2.Columns.Add("NOME", GetType(String))
                dt_2.Columns.Add("TEM_UC", GetType(String))
                'dt_2.Columns.Add("IMAGEM", GetType(Byte()))

                ds = New DataSet

                lstrsql = ""
                lstrsql = "SELECT DISTINCT A.CONSREG AS CONSID, A.NOME, IF(IFNULL(b.cons_id, 0) = 0, 'sem', 'com') AS TEM_UC FROM CONSUM A "
                lstrsql += "LEFT JOIN UC_FATURAMENTO B ON A.CONSREG = B.CONS_ID "
                lstrsql += "LEFT JOIN CLASSE C ON B.CLAS = C.CODIGO "
                lstrsql += "WHERE 1 = 1 "
                lstrsql += "ORDER BY C.CODIGO, A.CONSREG "


                objAtualizaBancoDados.QUERY_NAME = lstrsql
                dt = repositorioAtualizaBancoDados.Consultar(objAtualizaBancoDados)

                If dt.Rows.Count > 0 Then
                    For Each dr_1 As DataRow In dt.Rows

                        dt_2.Rows.Add(dr_1("CONSID"),
                                      dr_1("NOME"),
                                      dr_1("TEM_UC"))
                        'bytBLOBData)

                    Next dr_1
                End If

                ds.Tables.Add(dt)
                ds.Tables(0).TableName = "REL_QTD_CONSUMIDORES"

                If ds.Tables(0).Rows.Count = 0 Then
                    MessageBox.Show("Não há registros para o relatório escolhido! ", "Informação", MessageBoxButtons.OK, MessageBoxIcon.Information)
                    Exit Sub
                Else

                    rpt = New rptRelTotalConsumidores

                    rpt.SetDataSource(ds)
                    rpt.SetParameterValue("nomeempresa", sNomeEmpresa)
                    rpt.SetParameterValue("enderecoempresa", sEnderecoEmpresa)
                    rpt.SetParameterValue("cepempresa", sCepEmpresa)
                    rpt.SetParameterValue("ufempresa", sUFempresa)
                    rpt.SetParameterValue("cidadeempresa", sCidadeEmpresa)
                    rpt.SetParameterValue("bairroempresa", sBairroEmpresa)
                    rpt.SetParameterValue("foneempresa", sFoneEmpresa)
                    rpt.SetParameterValue("websiteempresa", sWebEmpresa)
                    rpt.SetParameterValue("NomeRel", "Relatório de Quantidade de Consumidores")

                    If rdbRelAnalitico.Checked Then
                        rpt.ReportDefinition.Sections.Item("GroupHeaderSection1").SectionFormat.BackgroundColor = Color.LightGray
                        rpt.ReportDefinition.Sections.Item("GroupFooterSection1").SectionFormat.EnableNewPageBefore = True
                    Else
                        rpt.ReportDefinition.Sections.Item("GroupHeaderSection2").SectionFormat.EnableSuppress = True
                        rpt.ReportDefinition.Sections.Item("GroupHeaderSection1").SectionFormat.BackgroundColor = Color.White
                    End If


                    frmViewRelatorios.rpt = rpt

                    frmViewRelatorios.CRViewer.Zoom((100))
                    frmViewRelatorios.Text = "Relatório Consumidores"
                    frmViewRelatorios.ShowDialog()

                End If
            End If

            If vNomeRPT = "rptRelTotalUnidadesConsumidoras" Then

                dt_2 = New DataTable()

                dt_2.Columns.Add("CONSREG", GetType(String))
                dt_2.Columns.Add("NOME", GetType(String))
                dt_2.Columns.Add("ZONA", GetType(String))
                dt_2.Columns.Add("LIVRO", GetType(String))
                dt_2.Columns.Add("CONTA", GetType(String))
                dt_2.Columns.Add("SITUACAO", GetType(String))
                dt_2.Columns.Add("CODIGO", GetType(String))
                dt_2.Columns.Add("DESCRICAO", GetType(String))

                ds = New DataSet


                lstrsql = ""
                lstrsql += "SELECT "
                lstrsql += "A.CONSREG, A.NOME, "
                lstrsql += "B.ZONA, B.LIVRO, B.CONTA, B.SITUACAO, "
                lstrsql += "C.CODIGO, C.DESCRICAO "
                lstrsql += "FROM CONSUM A "
                lstrsql += "INNER JOIN UC_FATURAMENTO B ON A.CONSREG = B.CONS_ID "
                lstrsql += "INNER JOIN CLASSE C ON B.CLAS = C.CODIGO "
                lstrsql += "WHERE 1 = 1 "

                If chkTodos.Checked Then
                    lstrsql += ""
                Else
                    If chkCortado.Checked Then
                        lstrsqlAux += "'C'"
                    End If

                    If chkLigado.Checked Then
                        lstrsqlAux += "'L'"
                    End If

                    If chkDesligado.Checked Then
                        lstrsqlAux += "'D'"
                    End If

                    lstrsql += "AND B.SITUACAO IN (" & lstrsqlAux.Replace("''", "', '") & ")"

                End If

                lstrsql += "ORDER BY C.CODIGO, FIELD(SITUACAO, 'L', 'D', 'C'), A.CONSREG, ZONA, LIVRO, CONTA"

                objAtualizaBancoDados.QUERY_NAME = lstrsql
                dt = repositorioAtualizaBancoDados.Consultar(objAtualizaBancoDados)

                If dt.Rows.Count > 0 Then
                    For Each dr_1 As DataRow In dt.Rows

                        dt_2.Rows.Add(dr_1("CONSREG"),
                                          dr_1("NOME"),
                                          dr_1("ZONA"),
                                          dr_1("LIVRO"),
                                          dr_1("CONTA"),
                                          dr_1("SITUACAO"),
                                          dr_1("CODIGO"),
                                          dr_1("DESCRICAO"))
                    Next dr_1
                End If

                ds.Tables.Add(dt)
                ds.Tables(0).TableName = "REL_QTD_UNIDADES_CONSUMIDORAS"

                If ds.Tables(0).Rows.Count = 0 Then
                    MessageBox.Show("Não há registros para o relatório escolhido! ", "Informação", MessageBoxButtons.OK, MessageBoxIcon.Information)
                    Exit Sub
                Else
                    rpt = New rptRelTotalUnidadesConsumidoras

                    rpt.SetDataSource(ds)
                    rpt.SetParameterValue("nomeempresa", sNomeEmpresa)
                    rpt.SetParameterValue("enderecoempresa", sEnderecoEmpresa)
                    rpt.SetParameterValue("cepempresa", sCepEmpresa)
                    rpt.SetParameterValue("ufempresa", sUFempresa)
                    rpt.SetParameterValue("cidadeempresa", sCidadeEmpresa)
                    rpt.SetParameterValue("bairroempresa", sBairroEmpresa)
                    rpt.SetParameterValue("foneempresa", sFoneEmpresa)
                    rpt.SetParameterValue("websiteempresa", sWebEmpresa)
                    rpt.SetParameterValue("NomeRel", "Relatório de Quantidade de Unidades Consumidoras")

                    If rdbRelAnalitico.Checked Then
                        rpt.ReportDefinition.Sections.Item("GroupFooterSection7").SectionFormat.BackgroundColor = Color.LightGray
                    Else
                        rpt.ReportDefinition.Sections.Item("GroupHeaderSection3").SectionFormat.EnableSuppress = True
                        rpt.ReportDefinition.Sections.Item("GroupHeaderSection2").SectionFormat.BackgroundColor = Color.White
                    End If


                    frmViewRelatorios.rpt = rpt
                    frmViewRelatorios.CRViewer.Zoom((100))
                    frmViewRelatorios.Text = "Relatório Unidades Consumidoras"
                    frmViewRelatorios.ShowDialog()
                End If
            End If

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

    End Sub

    Private Sub cmd_fechar_Click(sender As Object, e As EventArgs) Handles cmd_fechar.Click
        Me.Close()
    End Sub

    Private Sub sCarregaDados()

        Dim lstrsql As String
        Dim iConsReg As Integer
        Dim iCodigo As Integer
        Dim strDescricaoClasse As String

        Try

            lstrsql = ""
            lstrsql = lstrsql & "delete from AUX_REL_QTD_CONSUMIDORES"
            objAtualizaBancoDados.QUERY_NAME = lstrsql
            repositorioAtualizaBancoDados.Execute(objAtualizaBancoDados)

            lstrsql = ""
            lstrsql = lstrsql & "SELECT DISTINCT a.consreg, c.descricao, c.codigo "
            lstrsql = lstrsql & " FROM consum a INNER JOIN uc_faturamento b ON (a.consreg =  b.cons_id) "
            lstrsql = lstrsql & " INNER JOIN Classe c ON(b.clas = c.codigo) "
            'lstrsql = lstrsql & " WHERE consreg IN (SELECT cons_id FROM nftransicao) "
            lstrsql = lstrsql & " ORDER BY consreg"
            objAtualizaBancoDados.QUERY_NAME = lstrsql
            dt = repositorioAtualizaBancoDados.Consultar(objAtualizaBancoDados)

            If dt.Rows.Count > 0 Then
                Call BarraProgresso((Me.ProgressBar), (Me.lblPerc), (Me.lblInfo), 0, dt.Rows.Count)
                For Each row As DataRow In dt.Rows


                    strDescricaoClasse = IIf(IsDBNull(row.Item("descricao")), "", row.Item("descricao"))
                    iConsReg = IIf(IsDBNull(row.Item("consreg")), "", row.Item("consreg"))
                    iCodigo = IIf(IsDBNull(row.Item("codigo")), "", row.Item("codigo"))

                    lstrsql = ""
                    lstrsql = lstrsql & "insert into AUX_REL_QTD_CONSUMIDORES(CLASSE,CONSID,CLASSID) VALUES ('" & strDescricaoClasse & "','" & iConsReg & "','" & iCodigo & "' )"
                    objAtualizaBancoDados.QUERY_NAME = lstrsql
                    repositorioAtualizaBancoDados.Execute(objAtualizaBancoDados)


                    Call BarraProgresso((Me.ProgressBar), (Me.lblPerc), (Me.lblInfo), 1)
                    System.Windows.Forms.Application.DoEvents()

                Next
            End If


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

    End Sub

    Private Sub sCriaTabelaAuxiliar()
        Dim lstrsql As String

        Try
            lstrsql = ""
            lstrsql = "DROP TABLE IF EXISTS `AUX_REL_QTD_CONSUMIDORES`"
            objExecAtualizaBancoDados.QUERY_NAME = lstrsql
            repositorioExecAtualizaBancoDados.Execute(objExecAtualizaBancoDados)

            lstrsql = ""
            lstrsql = lstrsql & "CREATE TABLE IF NOT EXISTS `AUX_REL_QTD_CONSUMIDORES` (" & vbCrLf
            lstrsql = lstrsql & "  `CLASSE`          varchar(100) DEFAULT NULL, " & vbCrLf
            lstrsql = lstrsql & "  `CONSID`          varchar(20) DEFAULT NULL, " & vbCrLf
            lstrsql = lstrsql & "  `CLASSID`         varchar(20) DEFAULT NULL) "
            objExecAtualizaBancoDados.QUERY_NAME = lstrsql
            repositorioExecAtualizaBancoDados.Execute(objExecAtualizaBancoDados)

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

    Private Sub frmRelQuantidadesConsumidores_Load(sender As Object, e As EventArgs) Handles MyBase.Load

        'Me.dtpMesAno.Value = CDate(VB6.Format(Date.Now, "dd/MM/yyyy"))
        sCriaTabelaAuxiliar()
    End Sub

    Private Sub frmRelQuantidadesConsumidores_FormClosed(sender As Object, e As FormClosedEventArgs) Handles MyBase.FormClosed

        Dim lstrsql As String

        Try

            lstrsql = ""
            lstrsql = "DROP TABLE IF EXISTS `AUX_REL_QTD_CONSUMIDORES`"
            objExecAtualizaBancoDados.QUERY_NAME = lstrsql
            repositorioExecAtualizaBancoDados.Execute(objExecAtualizaBancoDados)

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

    Private Sub chkTodos_CheckedChanged(sender As Object, e As EventArgs) Handles chkTodos.CheckedChanged, chkDesligado.CheckedChanged, chkCortado.CheckedChanged, chkLigado.CheckedChanged

        If sender Is chkTodos Then

            If flgSender1 = 0 Then
                flgSender = 1
                chkCortado.Checked = chkTodos.Checked
                chkLigado.Checked = chkTodos.Checked
                chkDesligado.Checked = chkTodos.Checked
                flgSender = 0
            End If

        Else

            If flgSender = 0 Then
                flgSender1 = 1
                If chkCortado.Checked And chkLigado.Checked And chkDesligado.Checked Then
                    chkTodos.Checked = True
                Else
                    chkTodos.Checked = False
                End If
                flgSender1 = 0
            End If

        End If

    End Sub

    Private Sub rdbConsumidor_CheckedChanged(sender As Object, e As EventArgs) Handles rdbConsumidor.CheckedChanged
        grpSituacao.Enabled = rdbUnidConsumidora.Checked
    End Sub
End Class