<?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 '../conexao/conexao.php';
require '../querys/query-consultas-performance.php';
require '../querys/query-cidades.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
$Configuracoes = new Configuracoes();

$consulta_bb = new ConsultaBancoDeDados();
$consultapcp = new ConsultasMetasPCP();
$filtros = new Filtros();
$cidades = $consulta_bb->get_cidades();

//recuperando cidade combo filial
// $query_cidade_filial = " select
//         DISTINCT
//         EP.codigo_cidadeestado ,
//         CE.NOMECIDADE as MUNIC
//         from EMPRESA EP
//         INNER JOIN CADASTRO_ENDERECO CA ON CA.codigo_cadastro = EP.codigo
//         inner join CIDADEESTADO CE on CA.codigo_cidadeestado = CE.CODIGO
//         where CA.tipo_cadastro = 5
//         order by EP.CODIGO";
// $result_cidade_filial = ibase_query($connection, $query_cidade_filial);

// if (!$result_cidade_filial) {
//     die('Erro na consulta: ' . ibase_errmsg());
// }

// $cidadefiliais = [];
// while ($row = ibase_fetch_assoc($result_cidade_filial)) {
//     $cidadefiliais[] = $row;
// }

//$cidade = trim($_GET['cidade']) ?? null;
if (isset($_GET['cidade'])) {
    // Obtém o valor da cidade e remove espaços em branco extras
    $cidade = trim($_GET['cidade']);
} else {
    // Se o parâmetro 'cidade' não estiver presente, define $cidade como null
    $cidade = null;
}

$filiais_condicao = $_GET['filial'] ?? [];
//pegar dados das filiais
if (!empty($filiais_condicao)) {
    if (is_array($filiais_condicao)) {
        // Se $filial for um array (vários valores selecionados), aplicamos array_map
        $filial = implode(",", array_map('intval', $filiais_condicao));
    } else {
        // Se $filial for uma string (apenas um valor selecionado), convertemos para inteiro diretamente
        $filial = intval($filiais_condicao);
    }
} else {
    // Se $filiais_condicao estiver vazio, atribuímos o valor "Todos" a $filial
    $filial = "Todos";
}
$xxx = $filial;

$anos = $_GET['ano'] ?? [];
$mes = $_GET['mes'] ?? null;

$filial = '';

if (isset($_GET['filial']) && is_array($_GET['filial'])) {
    $filial = array_map('intval', $_GET['filial']);
}


$busca_gestao = $_GET['busca_gestao'] ?? null;

$consultaDadosPerformance = new ConsultaDadosPerformance();

//$cidades = new Cidades($connectionmysql);

$dadosManipulados = [];
$dadosMarcaPropria = [];
$dadosRevenda = [];

?>

<!DOCTYPE html>
<html lang="pt-br">


<link href="https://cdn.jsdelivr.net/npm/select2@4.1.0-rc.0/dist/css/select2.min.css" rel="stylesheet" />
<?php
$pageTitle = "Acompanhamento de performance"; // Definir o título da página aqui
include('../geral/header.php');
?>

<!-- JavaScript do Bootstrap e dependência de jQuery e Popper.js -->
<script src="https://code.jquery.com/jquery-3.5.1.slim.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/@popperjs/core@2.5.3/dist/umd/popper.min.js"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/js/bootstrap.min.js"></script>

<body>


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

    <style>
        /* Garante que o select2 tenha largura adequada */
        .select2-container {
            width: 100% !important;
        }

        /* Ajusta o alinhamento do campo select */
        .select2-container--default .select2-selection--multiple {
            height: 38px;
            border: 1px solid #ced4da;
            padding: 5px;
            display: flex;
            align-items: center;
        }

        /* Centraliza o texto no campo de seleção */
        .select2-container--default .select2-selection--multiple .select2-selection__rendered {
            display: flex;
            justify-content: flex-start;
            align-items: center;
            height: 100%;
            white-space: nowrap;
            overflow: hidden;
            text-overflow: ellipsis;
        }

        .select2-container--default .select2-selection--multiple .select2-selection__choice__display {
            cursor: default;
            padding-left: 18px;
            padding-right: 5px;
        }

        .select2-container--open .select2-dropdown--below {
            border-top: none;
            border-top-left-radius: 0;
            border-top-right-radius: 0;
            width: 296px !important;
        }

        /* Adicionar barra de rolagem horizontal */
        #datatable-buttons {
            width: 100%;
            overflow-x: auto;
            /* Ativa a barra de rolagem horizontal */
            display: block;
            table-layout: auto;
        }

        /* Fixar a primeira coluna */
        #datatable-buttons th:first-child,
        #datatable-buttons td:first-child {
            position: sticky;
            left: 0;
            background-color: #f8f9fa;
            /* Cor de fundo para o destaque da coluna fixa */
            z-index: 1;

        }

        /* Ajustes de estilo para a tabela */
        #datatable-buttons th {
            text-align: center;
            white-space: nowrap;
            /* Impede que o texto quebre em várias linhas */
        }

        #datatable-buttons td {
            text-align: center;

        }

        #datatable-buttons th,
        #datatable-buttons td {
            padding: 10px;
        }

        /* Adicionar barra de rolagem horizontal */
        #datatable-buttons-meses {
            width: 100%;
            overflow-x: auto;
            /* Ativa a barra de rolagem horizontal */
            display: block;
            table-layout: auto;
        }

        /* Fixar a primeira coluna */
        #datatable-buttons-meses th:first-child,
        #datatable-buttons-meses td:first-child {
            position: sticky;
            left: 0;
            background-color: #f8f9fa;
            /* Cor de fundo para o destaque da coluna fixa */
            z-index: 1;

        }

        /* Ajustes de estilo para a tabela */
        #datatable-buttons-meses th {
            text-align: center;
            white-space: nowrap;
            /* Impede que o texto quebre em várias linhas */
        }

        #datatable-buttons-meses td {
            text-align: center;
        }

        #datatable-buttons-meses th,
        #datatable-buttons-meses td {
            padding: 10px;
        }

        /* Adicionar barra de rolagem horizontal */
        #datatable-buttons-ano {
            width: 100%;
            overflow-x: auto;
            /* Ativa a barra de rolagem horizontal */
            display: block;
            table-layout: auto;
        }

        /* Ajustes de estilo para a tabela */
        #datatable-buttons-ano th {
            text-align: center;
            white-space: nowrap;
            /* Impede que o texto quebre em várias linhas */
        }

        #datatable-buttons-ano td {
            text-align: center;

        }

        #datatable-buttons-ano th,
        #datatable-buttons-ano td {
            padding: 10px;
        }
    </style>

    <!-- ============================================================== -->
    <!-- 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-12">

                                <div class="form-group col-6 col-md-4 col-lg-2">
                                    <label for="ano" class="col-form-label">Gestão</label>
                                    <select id="busca_gestao" name="busca_gestao" required class="form-control">
                                        <option value="">Selecione um</option>
                                        <option value="1" <?php if (isset($busca_gestao) and $busca_gestao == 1) {
                                                                echo 'selected';
                                                            } ?>>Faturamento Total</option>
                                        <option value="2" <?php if (isset($busca_gestao) and $busca_gestao == 2) {
                                                                echo 'selected';
                                                            } ?>>Manipulado</option>
                                        <option value="3" <?php if (isset($busca_gestao) and $busca_gestao == 3) {
                                                                echo 'selected';
                                                            } ?>>Revenda</option>
                                        <option value="4" <?php if (isset($busca_gestao) and $busca_gestao == 4) {
                                                                echo 'selected';
                                                            } ?>>Marca Própria</option>
                                    </select>

                                </div>

                                <?php
                                // Exibe o filtro de cidade
                                echo $filtros->filtroCidade($cidade, $cidades, false, '', true, true);
                                ?>
                                <!-- <div class="col-6 col-md-4 col-lg-2">
                                    <label for="cidade" class="col-form-label">Cidade</label>
                                    <select id="cidade" name="cidade" class="form-control">
                                        <option value="Todos" <?= !isset($cidade) || $cidade == "Todos" ? "selected" : ""; ?>>Todos</option>
                                        <?php foreach ($cidadefiliais as $item) : ?>
                                            <option value="<?= $item['MUNIC']; ?>" <?= isset($cidade) && trim($cidade) == trim($item['MUNIC']) ? "selected" : ""; ?>>
                                                <?= $item['MUNIC']; ?>
                                            </option>
                                        <?php endforeach; ?>
                                    </select>
                                </div> -->

                                <div class="col-6 col-md-4 col-lg-2">
                                    <label for="filial" class="col-form-label">Filial:</label>
                                    <input type="checkbox" id="select_todos"> <label for="select_todos">Selecionar Todos
                                    </label>

                                    <select multiple id="filial" name="filial[]" class="form-control">
                                        <?php
                                        // Obter todas as filiais disponíveis
                                        $query_filiais = "SELECT 
                                            EP.CODIGO as ID, 
                                            EP.DESCRICAO as NOME,
                                            CE.NOMECIDADE as CIDADE
                                        FROM EMPRESA EP
                                        INNER JOIN CADASTRO_ENDERECO CA ON CA.codigo_cadastro = EP.codigo
                                        INNER JOIN CIDADEESTADO CE ON CA.codigo_cidadeestado = CE.CODIGO
                                        WHERE CA.tipo_cadastro = 5
                                        ORDER BY EP.CODIGO";
                                        
                                        $result_filiais = mysqli_query($connectionmysql, $query_filiais);
                                        
                                        if ($result_filiais) {
                                            while ($row_filiais = mysqli_fetch_assoc($result_filiais)) {
                                                $selected = (isset($filial) && is_array($filial) && in_array($row_filiais['ID'], $filial)) ? 'selected' : '';
                                                echo '<option value="' . $row_filiais['ID'] . '" ' . $selected . '>' . 
                                                     utf8_encode($row_filiais['ID']) . ' - ' . 
                                                     utf8_encode($row_filiais['NOME']) . '</option>';
                                            }
                                        }
                                        ?>
                                    </select>

                                </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" multiple="multiple" required>
                                        <?php
                                        $anosSelecionados = isset($_GET['ano']) ? $_GET['ano'] : []; // Captura os anos da URL
                                        $anoAtual = date("Y") + 1; // Obtém o ano atual incrementado em 1
                                        $anosDisponiveis = [];

                                        // Gera os anos de forma decrescente a partir de $anoAtual
                                        for ($i = 0; $i < 5; $i++) {
                                            $anosDisponiveis[] = $anoAtual - $i;
                                        }

                                        foreach ($anosDisponiveis as $ano) {
                                            $selected = in_array($ano, $anosSelecionados) ? 'selected' : ''; // Verifica se o ano está selecionado
                                            echo "<option value=\"$ano\" $selected>$ano</option>";
                                        }
                                        ?>
                                    </select>
                                </div>


                                <div class="form-group col-6 col-md-4 col-lg-2">
                                    <label for="ano" class="col-form-label">Gestão por Dias</label>
                                    <input type="checkbox" name="dias" value="S" <?php if (isset($_GET['dias']) and $_GET['dias'] == 'S') {
                                                                                        echo 'checked';
                                                                                    } ?>>
                                </div>

                                <?php
                                // Exibe o filtro de mes
                                //echo $filtros->filtroMes($mes);
                                ?>

                                <input type="hidden" name="form_submitted" value="1" />
                                <div class="col-6 col-md-4 col-lg-12 mt-3 text-right">
                                    <a href="index.php" class="btn btn-warning mr-2"><i class="mdi mdi-plus"></i> Limpar</a>
                                    <button type="submit" class="btn btn-primary"><i class="mdi mdi-magnify"></i> Pesquisar</button>
                                </div>
                            </div>
                        </form>
                    </div>
                </div>
                <br>
                <br>

                <?php if (isset($_GET['form_submitted']) && $_GET['form_submitted'] == 1) { ?>
                    <div class="position-relative">
                        <!-- Loading Overlay -->
                        <div id="loading-overlay" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; background-color: rgba(255, 255, 255, 0.95); display: flex; justify-content: center; align-items: center; z-index: 9999; border-radius: 8px; box-shadow: 0 0 10px rgba(0,0,0,0.1);">
                            <div class="text-center">
                                <div class="spinner-border text-primary" role="status" style="width: 3rem; height: 3rem;">
                                </div>
                                <div style="margin-top: 10px; color: #666; font-weight: 500;">Carregando dados...</div>
                            </div>
                        </div>

                        <div id="content-container" style="display: none;">
                            <?php if (!isset($_GET['dias'])) {
                                gerarLog(
                                    5, // tipo de log (acesso)
                                    $basePath, // módulo
                                    $_SESSION['CodUsuario'],
                                    $_SESSION['NomeUsuario']
                                );
                            ?>
                                <?php include('crescimento_mensal.php'); ?>
                            <?php } elseif (isset($_GET['dias']) && $_GET['dias'] == 'S') {

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

                            ?>
                                <?php include('crescimento_dias.php'); ?>
                            <?php } ?>
                        </div>
                    </div>
                <?php } ?>
            </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.jsdelivr.net/npm/select2@4.1.0-rc.0/dist/js/select2.min.js"></script>

        <script>
            document.addEventListener('DOMContentLoaded', function() {
                // Esconde o overlay de loading com timeout máximo de 10 segundos
                const maxTimeout = 10000; // 10 segundos máximo
                const minTimeout = 1000;  // 1 segundo mínimo para mostrar loading
                
                let loadingHidden = false;
                
                function hideLoading() {
                    if (!loadingHidden) {
                        const loadingOverlay = document.getElementById('loading-overlay');
                        const contentContainer = document.getElementById('content-container');
                        
                        if (loadingOverlay) {
                            loadingOverlay.style.display = 'none';
                        }
                        if (contentContainer) {
                            contentContainer.style.display = 'block';
                        }
                        loadingHidden = true;
                    }
                }
                
                // Timeout máximo para garantir que o loading não fique preso
                const maxTimeoutId = setTimeout(hideLoading, maxTimeout);
                
                // Timeout mínimo para garantir que o usuário veja o loading
                setTimeout(function() {
                    // Verifica se o conteúdo foi carregado (tem tabelas)
                    const contentContainer = document.getElementById('content-container');
                    if (contentContainer) {
                        const tables = contentContainer.querySelectorAll('table');
                        if (tables.length > 0) {
                            clearTimeout(maxTimeoutId);
                            hideLoading();
                        }
                    }
                }, minTimeout);
                
                // Verificação periódica para esconder o loading quando o conteúdo estiver pronto
                const checkInterval = setInterval(function() {
                    const contentContainer = document.getElementById('content-container');
                    if (contentContainer) {
                        const tables = contentContainer.querySelectorAll('table');
                        if (tables.length > 0) {
                            clearInterval(checkInterval);
                            clearTimeout(maxTimeoutId);
                            hideLoading();
                        }
                    }
                }, 500);
                
                // Limpeza do intervalo após o timeout máximo
                setTimeout(function() {
                    clearInterval(checkInterval);
                }, maxTimeout);
            });
        </script>

        <script>
            $(document).ready(function() {
                $(".money").mask("000000", {
                    reverse: true
                });
            });

            $(document).ready(function() {
                // Inicializa o Select2 no campo de seleção de ano
                $('#ano').select2({
                    placeholder: "Selecione os anos",
                    allowClear: true,
                    dropdownParent: $('body'),
                    maximumSelectionLength: 2, // Limita a seleção a 2 opções
                    language: {
                        noResults: function() {
                            return "Nenhum resultado encontrado";
                        },
                        searching: function() {
                            return "Procurando...";
                        },
                        maximumSelected: function(args) { // Mensagem personalizada
                            return "Você só pode selecionar até 2 anos.";
                        }
                    }
                });

                // Validação para garantir pelo menos dois anos selecionados
                $('form').on('submit', function(e) {
                    const selectedYears = $('#ano').val(); // Obtem os anos selecionados

                    if (!selectedYears || selectedYears.length < 2) {
                        e.preventDefault(); // Impede o envio do formulário
                        alert("Você deve selecionar pelo menos dois anos.");
                        $('#ano').focus();
                    }
                });
            });

            $(document).ready(function() {
                // Função para carregar filiais via AJAX
                function carregarFiliais(cidade) {
                    $.ajax({
                        url: 'get_filiais.php',
                        type: 'POST',
                        dataType: 'json',
                        data: {
                            cidade: cidade
                        },
                        success: function(data) {
                            // Limpa o select atual
                            $('#filial').empty();
                            
                            // Adiciona a opção padrão
                            $('#filial').append(new Option('Selecione uma ou mais filiais', '', false, false));
                            
                            // Adiciona as filiais retornadas
                            $.each(data, function(index, item) {
                                $('#filial').append(new Option(item.DESCRFIL, item.cdfil, false, false));
                            });
                            
                            // Inicializa o Select2
                            $('#filial').select2({
                                placeholder: 'Selecione uma ou mais filiais',
                                allowClear: true
                            });
                            
                            // Recuperar filiais selecionadas do localStorage
                            var filiaisSelecionadas = JSON.parse(localStorage.getItem('filiaisSelecionadas')) || [];
                            
                            // Selecionar as filiais recuperadas
                            if (filiaisSelecionadas.length > 0) {
                                $('#filial').val(filiaisSelecionadas).trigger('change');
                            }
                        },
                        error: function(xhr, status, error) {
                            console.error('Erro ao carregar filiais:', error);
                            // Inicializa o Select2 mesmo em caso de erro
                            $('#filial').select2({
                                placeholder: 'Selecione uma ou mais filiais',
                                allowClear: true
                            });
                        }
                    });
                }
                
                // Carregar filiais ao alterar a cidade
                $('#cidade').on('change', function() {
                    var cidadeSelecionada = $(this).val();
                    if (cidadeSelecionada && cidadeSelecionada !== 'Todos') {
                        carregarFiliais(cidadeSelecionada);
                    } else {
                        // Se não houver cidade selecionada, limpa o select de filiais
                        $('#filial').empty();
                        $('#filial').append(new Option('Selecione uma ou mais filiais', '', false, false));
                        $('#filial').select2({
                            placeholder: 'Selecione uma ou mais filiais',
                            allowClear: true
                        });
                    }
                });
                
                // Ao selecionar ou deselecionar uma filial, atualiza o localStorage
                $('#filial').on('change', function() {
                    var filiaisSelecionadas = $(this).val() || [];
                    localStorage.setItem('filiaisSelecionadas', JSON.stringify(filiaisSelecionadas));
                });
                
                // Checkbox para selecionar todas as filiais
                $("#select_todos").click(function() {
                    if ($(this).is(':checked')) {
                        // Seleciona todas as opções disponíveis no select
                        $('#filial option:not(:disabled)').prop('selected', true);
                        $('#filial').trigger('change');
                    } else {
                        $('#filial option').prop('selected', false);
                        $('#filial').trigger('change');
                    }
                });
                
                // Carregar filiais se já houver uma cidade selecionada no carregamento da página
                var cidadeInicial = $('#cidade').val();
                if (cidadeInicial && cidadeInicial !== 'Todos') {
                    carregarFiliais(cidadeInicial);
                } else {
                    // Inicializa o Select2 vazio se não houver cidade
                    $('#filial').select2({
                        placeholder: 'Selecione uma ou mais filiais',
                        allowClear: true
                    });
                }
            });

            function showModal(modalId, title, message) {
                const modalElement = document.getElementById(modalId);
                const modal = new bootstrap.Modal(modalElement);
                modalElement.querySelector('.modal-title').textContent = title;
                modalElement.querySelector('.modal-body p').textContent = message;
                modal.show();
            }

            function validarCampo(id) {
                const campo = document.getElementById(id);
                const valor = campo.value.trim();
                let campoValido = true;

                if (!valor || valor === 'Selecione') {
                    campoValido = false;
                    campo.classList.add('is-invalido');
                } else {
                    campo.classList.remove('is-invalido');
                }
                return campoValido;
            }

            function validarFormulario() {
                const mes = validarCampo('mes');
                const ano = validarCampo('ano');

                const camposValidos = mes && ano;

                if (!camposValidos) {
                    showModal('exampleModal', 'Informação', 'Por favor, selecione o mês e o ano da consulta.');
                }

                return camposValidos;
            }

            function verificarErroNaURL() {
                const urlParams = new URLSearchParams(window.location.search);
                const errorMessage = urlParams.get('error');
                if (errorMessage) {
                    showModal('exampleModal', 'Erro', errorMessage);
                }
            }

            window.onload = verificarErroNaURL;
        </script>
        <style>
            .is-invalido {
                box-shadow: 0 0 5px red !important;
            }
        </style>
</body>

</html>