<?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 'consulta_bd.php';
require '../logs/gera-log.php';

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

$resultmeta = null;

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

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
    }
}

$filiais = $consulta_bb->get_filiais();
$vendedores = $consulta_bb->get_vendedores();
// $clientes = $consulta_bb->get_clientes();

$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);

// $ano = $_GET['ano'] ?? null;
// $mes = $_GET['mes'] ?? null;
$DataInicial = $_GET['dataInicial'] ?? null;
$DataFinal = $_GET['dataFinal'] ?? null;
$vendedor_nome = $_GET['vendedor'] ?? null;
$vendedor = str_replace('+', ' ', $vendedor_nome);
$partes = explode(' - ', $vendedor);
if (isset($partes[0])) {
    $vendedor = trim($partes[0]);
} else {
    $vendedor = null;
}
$cliente = $_GET['cliente'] ?? null;

$query_string = http_build_query([
    'filial' => $filial,
    'dataInicial' => $DataInicial,
    'dataFinal' => $DataFinal,
    'vendedor' => $vendedor_nome,
    'cliente' => $cliente,
    'form_submitted' => isset($_GET['form_submitted']) ? $_GET['form_submitted'] : null,
]);

if (isset($_GET['form_submitted']) && $_GET['form_submitted'] == '1') {

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

    $clientes_orcamentos = $consulta_clientes_orcamentos->get_top_clientes_aprovados($connection,  $filial, $cliente, $DataInicial, $DataFinal);
}
//var_dump($clientes_orcamentos);
?>

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



<body>
    <!-- Navigation Bar-->
    <?php
    include('../geral/menu.php');
    ?>
    <!-- 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"><?= $pageTitle ?></h4>
                    </div>

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

                    <div class="col-12">
                        <form id="indexForm" method="get" action="" onsubmit="return validarFormulario()">
                            <div class="form-row mb-3">
                                <?php
                                echo $filtros->filtroFilialSimples($filialselect, $filiais, true, null, 2);
                                //echo $filtros->filtroCheckBox(lcfirst($nome_para_vendedor), $vendedores, null);
                                //echo $filtros->FiltroSearch('cliente', $clientes, $cliente);
                                ?>

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

                                <div class="form-group col-6 col-md-4 col-lg-2" style="margin-top: 7px;">
                                    <label for="periodo">Período</label>
                                    <select class="form-control" id="periodo" name="periodo" onchange="atualizarDatas()">
                                        <option value="" <?= (isset($_GET['periodo']) && $_GET['periodo'] === '') ? 'selected' : '' ?>>Selecione um período</option>
                                        <option value="hoje" <?= (isset($_GET['periodo']) && $_GET['periodo'] === 'hoje') ? 'selected' : '' ?>>Hoje</option>
                                        <option value="ontem" <?= (isset($_GET['periodo']) && $_GET['periodo'] === 'ontem') ? 'selected' : '' ?>>Ontem</option>
                                        <option value="semana" <?= (isset($_GET['periodo']) && $_GET['periodo'] === 'semana') ? 'selected' : '' ?>>Esta Semana</option>
                                        <option value="quinzena" <?= (isset($_GET['periodo']) && $_GET['periodo'] === 'quinzena') ? 'selected' : '' ?>>Esta Quinzena</option>
                                        <option value="mes" <?= (isset($_GET['periodo']) && $_GET['periodo'] === 'mes') ? 'selected' : '' ?>>Este Mês</option>
                                        <option value="personalizado" <?= (isset($_GET['periodo']) && $_GET['periodo'] === 'personalizado') ? 'selected' : '' ?>>Personalizado</option>
                                    </select>
                                </div>
                                <div class="form-group col-6 col-md-4 col-lg-2" style="margin-top: -3px;">
                                    <label for="dataInicial" class="col-form-label" oninput="validarCampo('dataInicial',this.value)">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" style="margin-top: -3px;">
                                    <label for="dataFinal" class="col-form-label" oninput="validarCampo('dataFinal',this.value)">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="ano" class="col-form-label">Ano</label>
                                    <select id="ano" name="ano" class="form-control">
                                        <?php
                                        $anoAtual = date('Y');
                                        for ($i = $anoAtual; $i >= 2020; $i--) {
                                            $selected = (isset($ano) && $ano == $i) ? 'selected' : '';
                                            echo "<option value='$i' $selected>$i</option>";
                                        }
                                        ?>
                                    </select>
                                </div>
                                <div class="form-group col-6 col-md-4 col-lg-2">
                                    <label for="mes" class="col-form-label">Mês</label>
                                    <select id="mes" name="mes" class="form-control">
                                        <?php
                                        $meses = [
                                            1 => 'Janeiro',
                                            2 => 'Fevereiro',
                                            3 => 'Março',
                                            4 => 'Abril',
                                            5 => 'Maio',
                                            6 => 'Junho',
                                            7 => 'Julho',
                                            8 => 'Agosto',
                                            9 => 'Setembro',
                                            10 => 'Outubro',
                                            11 => 'Novembro',
                                            12 => 'Dezembro'
                                        ];
                                        foreach ($meses as $numero => $nomeMes) {
                                            $selected = (isset($mes) && $mes == $numero) ? 'selected' : '';
                                            echo "<option value='$numero' $selected>$nomeMes</option>";
                                        }
                                        ?>
                                    </select>
                                </div> -->



                                <input type="hidden" name="form_submitted" value="1" />

                                <div class="col-12 col-md-8 col-lg-12 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 type="submit" class="btn btn-primary">
                                            <i class="mdi mdi-magnify"></i> Pesquisar
                                        </button>
                                    </div>
                                </div>



                            </div>
                        </form>
                    </div>
                </div>

                <?php
                if (isset($_GET['form_submitted']) && $_GET['form_submitted'] == '1') { ?>
                    <div class="col-12">
                        <div style="display: flex; justify-content: space-between; align-items: center;">
                            <h6>Lista Orçamentos</h6>
                        </div>

                        <table id="datatable-buttons" class="table table-bordered table-hover table-sm" style="width:100%;">
                            <thead>
                                <tr class="text-center">
                                    <th class="text-center">Cod. Cliente</th>
                                    <th class="text-center">Nome Cliente</th>
                                    <th class="text-center">Ticket Médio</th>
                                    <th class="text-center">Total Aprovado</th>
                                    <th class="text-center">Qtd. Aprovado</th>
                                    <th class="text-center">%</th>
                                    <th class="text-center">Total Reprovado</th>
                                    <th class="text-center">Qtd. Reprovado</th>
                                    <th class="text-center">%</th>
                                    <th>Ações</th>
                                </tr>
                            </thead>
                            <?php
                            $totalVendaAprovadoGeral = 0;
                            $quantidadeAprovadoGeral = 0;
                            $totalVendaReprovadoGeral = 0;
                            $quantidadeReprovadoGeral = 0;
                            $totalValorAprovado = 0;
                            $totalValorReprovado = 0;

                            $hasResults = false;
                            if (isset($clientes_orcamentos) && count($clientes_orcamentos) > 0) {
                                foreach ($clientes_orcamentos as $row) {
                                    // Converter codificação para UTF-8
                                    // $row['NOME_CLIENTE'] = mb_convert_encoding($row['NOME_CLIENTE'], 'UTF-8', 'ISO-8859-1');

                                    $hasResults = true;
                                    echo '<tr class="text-center">';
                                    echo '<th  class="text-center"scope="row">' . $row['COD_CLIENTE'] . '</th>';
                                    echo '<th  class="text-center"scope="row">' . $row['NOME_CLIENTE'] . '</th>';
                                    echo '<td  class="text-center"data-order="' . number_format($row["TICKET_MEDIO_POR_FORMULA_APROVA"], 2, '.', '') . '">
                                    R$ ' . number_format($row['TICKET_MEDIO_POR_FORMULA_APROVA'], 2, ',', '.') . '
                                    </td>';

                                    echo '<td  class="text-center"data-order="' . number_format($row["TOTAL_VENDA_APROVADO"], 2, '.', '') . '">
                                    R$ ' . number_format($row['TOTAL_VENDA_APROVADO'], 2, ',', '.') . '
                                    </td>';

                                    echo '<td class="text-center">' . $row['QUANTIDADE_APROVADO'] . '</td>';

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

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

                                    echo '<td class="text-center">' . $row['QUANTIDADE_REPROVADO'] . '</td>';

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

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

                                    echo '</tr>';

                                    // Atualiza o totalizador
                                    $totalValorAprovado += floatval($row['TOTAL_VENDA_APROVADO']);
                                    $totalValorReprovado += floatval($row['TOTAL_VENDA_REPROVADO']);
                                }
                            } else {
                                echo "<tr><td colspan='11' class='text-center'>Sem resultado para a consulta</td></tr>";
                            }
                            ?>
                            </tbody>
                        </table>
                        <!-- 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>
                <?php }  ?>
            </div>
        </div>
    </div>

    <!-- end wrapper -->

    <!-- ============================================================== -->
    <!-- End Page content -->
    <!-- ============================================================== -->

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

    <?php
    include('../geral/mensagens_modais.php');

    ?>

    <!-- Vendor js -->
    <script src="../../assets/js/vendor.min.js"></script>

    <!-- knob plugin -->
    <script src="../../assets/libs/jquery-knob/jquery.knob.min.js"></script>
    <!-- App js-->
    <script src="../../assets/js/app.min.js"></script>

    <script src="../geral/javascript.js"></script>
    <script src="../../assets/js/funcoes.js"></script>

    <!-- Inclua isso no cabeçalho para garantir que as bibliotecas sejam carregadas -->
    <script src="https://code.jquery.com/jquery-3.6.0.min.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>
        $(document).ready(function() {
            var table = $('#datatable-buttons').DataTable({
                "language": {
                    "url": "https://cdn.datatables.net/plug-ins/1.10.21/i18n/Portuguese-Brasil.json"
                },
                "lengthMenu": [
                    [10, 25, 50, 100, -1],
                    [10, 25, 50, 100, "Todos"]
                ],
                "buttons": [
                    // 'copyHtml5',
                    'excelHtml5',
                    'csvHtml5',
                    //  'pdfHtml5'
                ],
                //"dom": 'lBfrtip',
                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>>',
                "order": [
                    [0, 'asc']
                ], // Ordenar pela primeira coluna em ordem ascendente
                "columnDefs": [{
                    "targets": 0, // Aplica ordenação apenas na primeira coluna (você pode ajustar o índice)
                    "orderable": true // Torna a coluna ordenável
                }]
            });

            // setTimeout(function() {
            //     $("#datatable-buttons_filter").children("label").css("font-size", "15px");
            // }, 150);
            // setTimeout(function() {
            //     $("#datatable-buttons_length").children("label").css("font-size", "15px");
            // }, 150);
        });

        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();
        });

        const periodoSelect = document.getElementById('periodo');
        const dataInicialField = document.getElementById('dataInicial');
        const dataFinalField = document.getElementById('dataFinal');
        let ignoreDateInputEvent = false;

        function formatISO(date) {
            return date.toISOString().split('T')[0];
        }

        function atualizarDatas() {
            const periodo = periodoSelect.value;
            const today = new Date();
            let dataInicialValor = '';
            let dataFinalValor = '';

            const primeiroDiaMes = new Date(today.getFullYear(), today.getMonth(), 1);
            const ultimoDiaMes = new Date(today.getFullYear(), today.getMonth() + 1, 0);
            const diaSemana = today.getDay();
            let inicioSemana = new Date(today);
            inicioSemana.setDate(today.getDate() - ((diaSemana + 6) % 7));
            let fimSemana = new Date(inicioSemana);
            fimSemana.setDate(inicioSemana.getDate() + 6);

            switch (periodo) {
                case 'hoje':
                    dataInicialValor = dataFinalValor = formatISO(today);
                    break;
                case 'ontem': {
                    const ontem = new Date(today);
                    ontem.setDate(today.getDate() - 1);
                    dataInicialValor = dataFinalValor = formatISO(ontem);
                    break;
                }
                case 'semana':
                    dataInicialValor = formatISO(inicioSemana);
                    dataFinalValor = formatISO(fimSemana);
                    break;
                case 'quinzena': {
                    const dia = today.getDate();
                    if (dia <= 15) {
                        dataInicialValor = formatISO(new Date(today.getFullYear(), today.getMonth(), 1));
                        dataFinalValor = formatISO(new Date(today.getFullYear(), today.getMonth(), 15));
                    } else {
                        dataInicialValor = formatISO(new Date(today.getFullYear(), today.getMonth(), 16));
                        dataFinalValor = formatISO(ultimoDiaMes);
                    }
                    break;
                }
                case 'mes':
                    dataInicialValor = formatISO(primeiroDiaMes);
                    dataFinalValor = formatISO(ultimoDiaMes);
                    break;
                case 'personalizado':
                default:
                    // Preserve current inputs when user selects personalizado or option is empty
                    return;
            }

            ignoreDateInputEvent = true;
            dataInicialField.value = dataInicialValor;
            dataFinalField.value = dataFinalValor;
            setTimeout(() => {
                ignoreDateInputEvent = false;
            }, 0);
        }

        function marcarPeriodoComoPersonalizado() {
            if (ignoreDateInputEvent) {
                return;
            }

            if (dataInicialField.value || dataFinalField.value) {
                periodoSelect.value = 'personalizado';
            }
        }

        periodoSelect.addEventListener('change', atualizarDatas);
        dataInicialField.addEventListener('input', marcarPeriodoComoPersonalizado);
        dataFinalField.addEventListener('input', marcarPeriodoComoPersonalizado);
    </script>


    <style>
        .is-invalido {
            box-shadow: 0 0 5px red !important;
        }
    </style>
    <style>
        #datatable-buttons_length label,
        #datatable-buttons_info {
            margin: 0 !important;
            padding: 0 !important;
            align-items: center;
        }
    </style>
</body>

</html>