<?php
require '../conexao/conexao.php';
//require '../sessao.php';
require '../conexao/acesso.php';
require '../configuacoes.php';
require '../configuracao/consulta_banco_dados.php';
require '../configuracao/filtros.php';
require '../configuracao/get_config.php';
require '../logs/gera-log.php';

$configuracoes = new Configuracoes();
$nome_para_vendedores = $configuracoes->get_nomeclatura_vendedor();
$nome_para_vendedor = $configuracoes->get_nomeclatura_vendedor(true);

// Instancia a classe de consulta_bb ao banco de dados
$consulta_bb = new ConsultaBancoDeDados();
$filtros = new Filtros();

$filiais = $consulta_bb->get_filiais();

$operacoes = $configuracoes->get_operacoes_em_uso(); // Supondo que já seja um array
if (!empty($operacoes)) {
    sort($operacoes);
    $operacoes = implode(',', array_map('intval', $operacoes));
} else {
    $operacoes = null;
}

function getBadgeClass($status)
{
    $lowerStatus = strtolower($status);

    if (strpos($lowerStatus, 'rejeitado') !== false) {
        return 'badge-danger';
    } elseif (strpos($lowerStatus, 'aprovado') !== false) {
        return 'badge-success';
    } else {
        return 'badge-secondary';  // ou qualquer outra classe padrão
    }
}

gerarLog(
    1, // tipo de log (acesso)
    $basePath, // módulo
    $_SESSION['CodUsuario'],
    $_SESSION['NomeUsuario']
);

$hasResults = false;
$nomeVendedor = $_GET['nomeVendedor'] ?? null;
$DataInicial = $_GET['DataInicial'] ?? null;
$DataFinal = $_GET['DataFinal'] ?? null;
$ids = array_column($filiais, 'ID');
array_unshift($ids, 'x');
$ids_filial = implode(',', $ids);
$filialselect = !empty($_GET['filial']) ? $_GET['filial'] : null;
$filial = explode(',', $filialselect);

$filial = array_filter($filial, function ($item) {
    return $item !== 'x';
});
$filial = array_values($filial);
$filial = implode(',', $filial);

$query_string = http_build_query([
    'nomeVendedor' => $nomeVendedor,
    'DataInicial' => $DataInicial,
    'DataFinal' => $DataFinal,
    'filial' => $filial,
    'pesquisar' => ''
]);

if (isset($_GET['pesquisar'])) {

    gerarLog(
        5, // tipo de log (acesso)
        $basePath, // id do módulo
        $_SESSION['CodUsuario'],
        $_SESSION['NomeUsuario']
    );

    // Iniciando a construção do SQL BASE

    $sql_vendedores = "SELECT

    A1.CODIGO_FUNCIONARIO_COMISSAO as CDFUN,
                FU.NOMEFUNCIONARIO as NOMEFUN,
                FU.TELEFONE1 as TELEFONE1,
                FU.TELEFONE2 as TELEFONE2,
                EXTRACT(YEAR FROM A1.CADASTRO_DT) as ANO,
 EXTRACT(MONTH FROM A1.CADASTRO_DT) as MES,
 A1.CADASTRO_LJ as FILIAL,
    sum(
       case
         when A1.STATUS_MOV = '-1' then cast(A1.VALORVENDA_DESC as numeric(18,2))
         else 0
       end) as TOTAL_VENDA_APROVADO,
       count(
       case
         when A1.STATUS_MOV = '-1' then 1
       end) as QUANTIDADE_APROVADO,
       ROUND(100 * sum(
       case
         when A1.STATUS_MOV = '-1' then A1.VALORVENDA_DESC
         else 0
       end) / nullif(sum(A1.VALORVENDA_DESC), 0), 2) as PORCENTAGEM_APROVADO, sum(
       case
         when A1.STATUS_MOV = '0' then cast(A1.VALORVENDA_DESC as numeric(18,2))
         else 0
       end) as TOTAL_VENDA_REPROVADO,
       count(
       case
         when A1.STATUS_MOV = '0' then 1
       end) as QUANTIDADE_REPROVADO,
       ROUND(100 * sum(
       case
         when A1.STATUS_MOV = '0' then A1.VALORVENDA_DESC
         else 0
       end) / nullif(sum(A1.VALORVENDA_DESC), 0), 2) as PORCENTAGEM_REPROVADO, REPLACE(cast(cast((sum(
       case
         when A1.STATUS_MOV = '-1' then A1.VALORVENDA_DESC
         else 0
       end) / nullif(count(
       case
         when A1.STATUS_MOV = '-1' then 1
        end), 0)) as decimal(10,2)) as varchar(20)), '.', '.') as TICKET_MEDIO_APROVADO
      
    from ATENDIMENTO_A1 A1
    inner join FUNCIONARIO FU ON FU.CODIGO = A1.CADASTRO_CF
    where A1.TIPO_ATENDIMENTO = 1
    AND A1.PAGAR_COMISSAO_FUNCIONARIO = '-1'

    
    ";
    //AND A1.CODIGO_FUNCIONARIO_COMISSAO = $cod_vendedor
    // if (!empty($operacoes) && $operacoes != "NULL") {
    //     $sql_vendedores .= " AND A1.codigo_tipooperacao NOT IN ($operacoes)";
    //     // AND A1.codigo_tipooperacao NOT IN (5, 159, 174, 184, 185, 186, 187, 188, 190, 216, 221, 234, 235, 236, 237, 242, 246, 261, 296, 297)
    // }
    if ($filial && $filial != "Todos") {
        $sql_vendedores .= " AND A1.CADASTRO_LJ IN (" . ($filial) . ")";
    }
    if ($nomeVendedor && $nomeVendedor != "Todos") {
        $nomeVendedor = strtoupper($nomeVendedor);
        $sql_vendedores .= " AND UPPER(FU.NOMEFUNCIONARIO) LIKE '" . $nomeVendedor . "%'";
    }
    if (!empty($DataInicial) && !empty($DataFinal)) {
        $sql_vendedores .= " AND A1.CADASTRO_DT BETWEEN '{$DataInicial}' AND '{$DataFinal}'";
    }


    $sql_vendedores .= " GROUP BY CDFUN, NOMEFUN, TELEFONE1, TELEFONE2, FILIAL, ANO, MES ORDER BY NOMEFUN ASC";


    $result_vendedores_aprovado = ibase_query($connection, $sql_vendedores);

    //echo '$sql_vendedores ' .  $sql_vendedores;
    // exit;

    if (!$result_vendedores_aprovado) {
        die('Erro na consulta Firebird/InterBase: ' . ibase_errmsg());
    }
}
function firebird_escape_string($value)
{
    return str_replace(["'", "\""], ["''", "\"\""], $value);
}
//var_dump($results_Vendedores);

?>


<!DOCTYPE html>
<html lang="pt-br">
<?php
$pageTitle = "$nome_para_vendedores" . " Orçamentos"; // Definir o título da página aqui
include('../geral/header.php');
?>

<body>

    <!-- Navigation Bar-->
    <?php
    include('../geral/menu.php');
    $nome_relatorio = $nome_para_vendedores;
    ?>
    <!-- End Navigation Bar-->

    <!-- ============================================================== -->
    <!-- Start Page Content here -->
    <!-- ============================================================== -->

    <div class="wrapper candidato">
        <div class="container-fluid">

            <div class="card-box mt-3">
                <div class="row">

                    <div class="col-6 text-left">
                        <h4 class="page-title">Consultar Orçamentos de <?php echo !empty($nome_relatorio) ? $nome_relatorio : 'Relatórios'; ?></h4>

                    </div>


                    <div class="col-12">
                        <hr>
                    </div>

                    <div class="col-12">
                        <form method="get" action="" onsubmit="return validarFormulario()">
                            <div class="form-row mb-3">
                                <?php
                                // Exibe o filtro de filial
                                echo $filtros->filtroFilialSimples($filialselect, $filiais);
                                ?>
                                <div class="form-group col-6 col-md-4 col-lg-2">
                                    <label for="DataInicial" class="col-form-label">Data Inicial</label>
                                    <input type="date" id="DataInicial" name="DataInicial" class="form-control" value="<?php echo isset($DataInicial) ? $DataInicial : ''; ?>">
                                </div>

                                <div class="form-group col-6 col-md-4 col-lg-2">

                                    <label for="DataFinal" class="col-form-label">Data Final</label>
                                    <input type="date" id="DataFinal" name="DataFinal" class="form-control" value="<?php echo isset($DataFinal) ? $DataFinal : ''; ?>">
                                </div>

                                <div class="form-group col-6 col-md-4 col-lg-2">
                                    <label for="nomeVendedor" class="col-form-label"><?= $nome_para_vendedor ?></label>
                                    <input type="text" class="form-control" id="nomeVendedor" name="nomeVendedor" placeholder="<?= $nome_para_vendedor ?>" value="<?php echo isset($nomeVendedor) ? htmlspecialchars($nomeVendedor) : ''; ?>">

                                </div>


                                <div class="col-12 col-md-8 col-lg-4 d-flex mt-2" style="align-items:center;justify-content: end;">
                                    <div>
                                        <a href="index.php" class="btn btn-warning mr-2"><i class="mdi mdi-plus"></i> Limpar</a>
                                    </div>
                                    <div>
                                        <button name="pesquisar" type="submit" class="btn btn-primary"><i class="mdi mdi-magnify"></i> Pesquisar</button>
                                    </div>
                                </div>
                        </form>
                    </div>
                </div>
                <?php if (isset($_GET['pesquisar'])) { ?>
                    <div class="col-12">
                        <h6>Tabela de Orçamentos por <?= $nome_para_vendedores ?></h6>

                        <div class="row">
                            <div class="col-12">
                                <div class="table-responsive" style="overflow-x: auto;">
                                <table id="minhaTabela" class="table table-bordered table-hover table-sm" style="min-width: 1200px; width: 100%;">
                                    <thead class="thead-light">
                                        <tr>
                                            <th scope="col" style="min-width: 200px;"><?= $nome_para_vendedor ?></th>
                                            <th scope="col" style="min-width: 100px;">Aprovado</th>
                                            <th scope="col" style="min-width: 80px; text-align: center;">% Valor</th>
                                            <th scope="col" style="min-width: 60px;">Qtd</th>
                                            <th scope="col" style="min-width: 80px; text-align: center;">% Qtd</th>
                                            <th scope="col" style="min-width: 100px;">Ticket Médio</th>
                                            <th scope="col" style="min-width: 100px;">Reprovado</th>
                                            <th scope="col" style="min-width: 80px; text-align: center;">% Valor</th>
                                            <th scope="col" style="min-width: 60px;">Qtd</th>
                                            <th scope="col" style="min-width: 80px; text-align: center;">% Qtd</th>
                                            <th scope="col" style="min-width: 100px;">Total Geral</th>
                                            <th scope="col" style="min-width: 60px;">Ano</th>
                                            <th scope="col" style="min-width: 60px;">Mês</th>
                                            <th scope="col" style="min-width: 80px;">Ações</th>
                                        </tr>
                                    </thead>
                                    <tbody>
                                        <?php
                                        $totalVendaAprovadoGeral = 0;
                                        $quantidadeAprovadoGeral = 0;
                                        $totalVendaReprovadoGeral = 0;
                                        $quantidadeReprovadoGeral = 0;
                                        $totalValorAprovado = 0;
                                        $totalValorReprovado = 0;

                                        $hasResults = false;
                                        if (isset($result_vendedores_aprovado)) {
                                            while ($rowgridvendedor = ibase_fetch_assoc($result_vendedores_aprovado)) {
                                                // Converter codificação para UTF-8

                                                foreach ($rowgridvendedor as $key => $value) {
                                                    $rowgridvendedor[$key] = mb_convert_encoding($value, 'UTF-8', 'ISO-8859-1');

                                                    $totalGeralLinha = $rowgridvendedor['TOTAL_VENDA_APROVADO'] + $rowgridvendedor['TOTAL_VENDA_REPROVADO'];

                                                    $total_quantidade = $rowgridvendedor['QUANTIDADE_APROVADO'] + $rowgridvendedor['QUANTIDADE_REPROVADO'];

                                                    $total_percentual_quantidade_aprovado = ($total_quantidade != 0)
                                                        ? ($rowgridvendedor['QUANTIDADE_APROVADO'] / $total_quantidade) * 100
                                                        : 0;

                                                    $total_percentual_quantidade_reprovado = ($total_quantidade != 0)
                                                        ? ($rowgridvendedor['QUANTIDADE_REPROVADO'] / $total_quantidade) * 100
                                                        : 0;

                                                    $total_percentual_valor_aprovado = ($totalGeralLinha != 0)
                                                        ? ($rowgridvendedor["TOTAL_VENDA_APROVADO"] / $totalGeralLinha) * 100
                                                        : 0;

                                                    $total_percentual_valor_reprovado = ($totalGeralLinha != 0)
                                                        ? ($rowgridvendedor["TOTAL_VENDA_REPROVADO"] / $totalGeralLinha) * 100
                                                        : 0;
                                                }
                                                $hasResults = true;
                                                echo '<tr>';
                                                echo '<th scope="row">' . $rowgridvendedor['NOMEFUN'] . '</th>';
                                                echo '<td data-order="' . number_format($rowgridvendedor["TOTAL_VENDA_APROVADO"], 2, '.', '') . '">
                                            R$ ' . number_format($rowgridvendedor['TOTAL_VENDA_APROVADO'], 2, ',', '.') . '
                                            </td>';

                                                echo '<td><span class="badge badge-success" style="font-size:0.92em;">' . number_format($total_percentual_valor_aprovado, 2, ',', '.') . '%</span></td>';

                                                echo '<td>' . $rowgridvendedor['QUANTIDADE_APROVADO'] . '</td>';

                                                echo '<td><span class="badge badge-success" style="font-size:0.92em;">' . number_format($total_percentual_quantidade_aprovado, 2, ',', '.') . '%</span></td>';


                                                echo '<td data-order="' . $rowgridvendedor["TICKET_MEDIO_APROVADO"] . '">
                                            R$ ' . $rowgridvendedor['TICKET_MEDIO_APROVADO'] . '
                                            </td>';

                                                echo '<td data-order="' . number_format($rowgridvendedor["TOTAL_VENDA_REPROVADO"], 2, '.', '') . '">R$ ' . number_format($rowgridvendedor['TOTAL_VENDA_REPROVADO'], 2, ',', '.') . ' </td>';

                                                echo '<td><span class="badge badge-danger" style="font-size:0.92em;">' . number_format($total_percentual_valor_reprovado, 2, ',', '.') . '%</span></td>';

                                                echo '<td>' . $rowgridvendedor['QUANTIDADE_REPROVADO'] . '</td>';

                                                echo '<td><span class="badge badge-danger" style="font-size:0.92em;">' . number_format($total_percentual_quantidade_reprovado, 2, ',', '.') . '%</span></td>';


                                                // Calcula o total geral da linha

                                                echo '<td data-order="' . number_format($totalGeralLinha, 2, '.', '') . '">R$ ' . number_format($totalGeralLinha, 2, ',', '.') . '</td>';

                                                echo '<td>' . (($rowgridvendedor['ANO'] !== null && $rowgridvendedor['ANO'] !== '') ? $rowgridvendedor['ANO'] : 'N/A') . '</td>';
                                                echo '<td>' . (($rowgridvendedor['MES'] !== null && $rowgridvendedor['MES'] !== '') ? $rowgridvendedor['MES'] : 'N/A') . '</td>';

                                                echo '<td>
                        <a href="detalhar_vendedor.php?id_vendedor=' . urlencode($rowgridvendedor['CDFUN']) . '&' . $query_string . '" class="table-actions link-view">
                            <i class="mdi mdi-account-search"></i>
                        </a>
                    </td>';

                                                echo '</tr>';

                                                // Atualiza o totalizador
                                                $totalValorAprovado += floatval($rowgridvendedor['TOTAL_VENDA_APROVADO']);
                                                $totalValorReprovado += floatval($rowgridvendedor['TOTAL_VENDA_REPROVADO']);
                                            }
                                        }

                                        if (!$hasResults) {
                                            echo "<tr><td colspan='13' class='text-center'>Sem resultado para a consulta</td></tr>";
                                        }
                                        ?>
                                    </tbody>
                                </table>
                                </div>
                                <!-- Adiciona a linha com o totalizador -->
                                <div class="row">
                                    <div class="col-md-12">
                                        <h4>Total Valor Aprovado: R$ <?php echo number_format($totalValorAprovado, 2, ',', '.'); ?></h4>
                                        <h4>Total Valor Reprovado: R$ <?php echo number_format($totalValorReprovado, 2, ',', '.'); ?></h4>
                                    </div>
                                </div>
                            </div>

                        </div>

                    </div>
                <?php } ?>

            </div>

        </div>

    </div> <!-- end container -->
    </div>

    <!-- end wrapper -->

    <!-- ============================================================== -->
    <!-- End Page content -->
    <!-- ============================================================== -->
    <!-- Footer Start -->
    <?php
    include('../geral/footer.php');
    ?>
    <!-- end Footer -->

    <?php
    include('../geral/mensagens_modais.php');
    ?>
    <!-- jQuery -->
    <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>

    <!-- Outros scripts -->
    <script src="../../assets/js/vendor.min.js"></script>
    <script src="../../assets/libs/jquery-knob/jquery.knob.min.js"></script>
    <script src="../../assets/js/app.min.js"></script>
    <script src="../geral/javascript.js"></script>

    <script src="https://cdn.datatables.net/1.11.3/js/jquery.dataTables.min.js"></script>
    <script src="https://cdn.datatables.net/1.11.3/js/dataTables.bootstrap5.min.js"></script>
    <link rel="stylesheet" href="https://cdn.datatables.net/1.11.3/css/dataTables.bootstrap5.min.css">

    <script src="https://cdn.datatables.net/buttons/2.0.1/js/dataTables.buttons.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jszip/3.1.3/jszip.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/pdfmake/0.1.66/pdfmake.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/pdfmake/0.1.66/vfs_fonts.js"></script>
    <script src="https://cdn.datatables.net/buttons/2.0.1/js/buttons.html5.min.js"></script>

    <link rel="stylesheet" href="https://cdn.datatables.net/buttons/2.0.1/css/buttons.dataTables.min.css">
    <link rel="stylesheet" href="../../assets/css/resetedatatable.css">


    <script>
        function showModal(title, message) {
            const modal = new bootstrap.Modal(document.getElementById('exampleModal'));
            const modalTitle = document.querySelector('.modal-title');
            const modalBody = document.querySelector('.modal-body p');

            modalTitle.textContent = title;
            modalBody.textContent = message;

            modal.show();
        }

        function validarCampo(id) {
            let campo = document.getElementById(id);
            return campo.value.trim(); // Retorna o valor do campo após remover espaços em branco
        }

        function adicionarClasseErro(campo) {
            campo.classList.add('is-invalido');
        }

        function removerClasseErro(campo) {
            campo.classList.remove('is-invalido');
        }

        function validarFormulario() {
            let DataInicial = validarCampo("DataInicial");
            let DataFinal = validarCampo("DataFinal");


            let DataInicialCampo = document.getElementById("DataInicial");
            let DataFinalCampo = document.getElementById("DataFinal");

            if (DataInicial === '' || DataFinal === '') {
                adicionarClasseErro(DataInicialCampo);
                adicionarClasseErro(DataFinalCampo);
                showModal('Informação', 'As datas de inicial e final são obrigatórias para realizar a consulta.');
                return false;
            }

            if (new Date(DataInicial) > new Date(DataFinal)) {
                adicionarClasseErro(DataInicialCampo);
                adicionarClasseErro(DataFinalCampo);
                showModal('Erro', 'A data inicial não pode ser maior que a data final.');
                return false;
            }

            if (!algumPreenchido) {
                showModal('Informação', 'Pelo menos um campo deve estar preenchido para realizar a consulta.');
                return false;
            }

            return true;
        }

        function verificarDatas() {
            let DataInicialCampo = document.getElementById("DataInicial");
            let DataFinalCampo = document.getElementById("DataFinal");
            let DataInicial = DataInicialCampo.value.trim();
            let DataFinal = DataFinalCampo.value.trim();

            if (DataInicial !== '' && DataFinal !== '') {
                removerClasseErro(DataInicialCampo);
                removerClasseErro(DataFinalCampo);

                if (new Date(DataInicial) > new Date(DataFinal)) {
                    adicionarClasseErro(DataInicialCampo);
                    adicionarClasseErro(DataFinalCampo);
                    //showModal('Erro', 'A data inicial não pode ser maior que a data final.');
                }
            }
        }

        document.getElementById("DataInicial").addEventListener('input', function() {
            removerClasseErro(this);
            verificarDatas();
        });

        document.getElementById("DataFinal").addEventListener('input', function() {
            removerClasseErro(this);
            verificarDatas();
        });
    </script>
    <style>
        .is-invalido {
            box-shadow: 0 0 5px red !important;
        }
        .table-responsive {
            -webkit-overflow-scrolling: touch;
            -ms-overflow-style: -ms-autohiding-scrollbar;
        }
        .table th, .table td {
            white-space: nowrap;
            vertical-align: middle;
        }
        .table thead th {
            background-color: #f8f9fa;
            position: sticky;
            top: 0;
            z-index: 10;
        }
    </style>

    <script>
        $(document).ready(function() {

            $('#minhaTabela').DataTable({
                "language": {
                    "url": "https://cdn.datatables.net/plug-ins/1.10.21/i18n/Portuguese-Brasil.json"
                },
                "order": [
                    [2, "desc"]
                ],
                "ordering": true,
                "lengthMenu": [
                    [10, 25, 50, 100, -1],
                    [10, 25, 50, 100, "Todos"]
                ],
                "buttons": [
                    //'copyHtml5',
                    'excelHtml5',
                    'csvHtml5',
                    // 'pdfHtml5'
                ],
                dom: '<"d-flex justify-content-between align-items-center mb-2"Bf>t<"datatable-footer d-flex justify-content-between align-items-center mt-2 w-100"<"footer-left"l><"footer-center"i><"footer-right"p>>', //"dom": 'lBfrtip',
            });
        });
    </script>
    <style>
        #minhaTabela_length label,
        #minhaTabela_info {
            margin: 0 !important;
            padding: 0 !important;
            align-items: center;
        }
    </style>
</body>

</html>