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

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

require '../querys/query-filiais.php';
$filiais = new Filiais($connectionmysql);

$resultmeta = null;

// Instancia a classe de consulta_bb ao banco de dados
$Configuracoes = new Configuracoes();

$consulta_bb = new ConsultaBancoDeDados();
$filtros = new Filtros();

$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';
}

//$cidades = $consulta_bb->getCidadesFiliais();
$cidades = $consulta_bb->get_cidades();

$normalizarListaInteiros = static function ($valores) {
    if (!is_array($valores)) {
        if (is_string($valores) && strpos($valores, ',') !== false) {
            $valores = explode(',', $valores);
        } else {
            $valores = isset($valores) && $valores !== '' ? [$valores] : [];
        }
    }

    return array_values(array_filter(array_map('intval', $valores), static function ($valor) {
        return $valor > 0;
    }));
};

$cidade = $_GET['cidade'] ?? null;
$filial = $_GET['filial'] ?? null;
$medicosSelecionados = $normalizarListaInteiros($_GET['nome_medico'] ?? []);
$representantesSelecionados = $normalizarListaInteiros($_GET['representantes'] ?? []);

$query_representante = "SELECT MR.codigo_funcionario, RP.nomefuncionario 
                        FROM MEDICO_REPRESENTANTE MR
                        INNER JOIN FUNCIONARIO RP ON MR.CODIGO_FUNCIONARIO = RP.CODIGO
                        WHERE RP.ATIVO = '-1'
                        GROUP BY MR.codigo_funcionario, RP.nomefuncionario
                        ORDER BY RP.nomefuncionario";

$result_query_representantes = ibase_query($connection, $query_representante);

if (!$result_query_representantes) {
    die('Erro ao executar a consulta: ' . ibase_errmsg());
}

$representantes = [];
while ($item = ibase_fetch_assoc($result_query_representantes)) {
    $representantes[] = $item;
}

$query_medicos = "SELECT DISTINCT
    ME.CODIGO AS CODIGO,
    ME.NOMEMEDICO AS NOME_MEDICO,
    CR.SIGLA || '-' || ME.CR_ESTADO || '-' || ME.CRM AS CRM_COMPLETO
FROM ATENDIMENTO_A1 A1
INNER JOIN MEDICO ME ON ME.CODIGO = A1.CODIGO_MEDICO
LEFT JOIN MEDICO_CR CR ON ME.CODIGO_CONSELHO_REGIONAL = CR.CODIGO
WHERE A1.TIPO_ATENDIMENTO = 1
AND ME.NOMEMEDICO IS NOT NULL
AND TRIM(ME.NOMEMEDICO) <> ''
ORDER BY ME.NOMEMEDICO, CRM_COMPLETO";

$result_query_medicos = ibase_query($connection, $query_medicos);

if (!$result_query_medicos) {
    die('Erro ao carregar os médicos: ' . ibase_errmsg());
}

$medicos = [];
while ($item = ibase_fetch_assoc($result_query_medicos)) {
    $medicos[] = $item;
}

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

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

    $query = "SELECT
    ME.NOMEMEDICO AS Nome_Medico,
    CR.SIGLA || '-' || ME.CR_ESTADO || '-' || ME.CRM AS CRM_COMPLETO,
    ESPEC.NOMEESPECIALIDADE,
    MIN(RP.NOMEFUNCIONARIO) AS REPRESENTANTES, 
    SUM(CASE WHEN EXTRACT(MONTH FROM A1.ENTREGUE_DT) = 1 THEN CAST(COALESCE(A1.VALORVENDA_DESC, 0) AS NUMERIC(18,2)) ELSE 0 END) AS Janeiro,
    SUM(CASE WHEN EXTRACT(MONTH FROM A1.ENTREGUE_DT) = 2 THEN CAST(COALESCE(A1.VALORVENDA_DESC, 0) AS NUMERIC(18,2)) ELSE 0 END) AS Fevereiro,
    SUM(CASE WHEN EXTRACT(MONTH FROM A1.ENTREGUE_DT) = 3 THEN CAST(COALESCE(A1.VALORVENDA_DESC, 0) AS NUMERIC(18,2)) ELSE 0 END) AS Marco,
    SUM(CASE WHEN EXTRACT(MONTH FROM A1.ENTREGUE_DT) = 4 THEN CAST(COALESCE(A1.VALORVENDA_DESC, 0) AS NUMERIC(18,2)) ELSE 0 END) AS Abril,
    SUM(CASE WHEN EXTRACT(MONTH FROM A1.ENTREGUE_DT) = 5 THEN CAST(COALESCE(A1.VALORVENDA_DESC, 0) AS NUMERIC(18,2)) ELSE 0 END) AS Maio,
    SUM(CASE WHEN EXTRACT(MONTH FROM A1.ENTREGUE_DT) = 6 THEN CAST(COALESCE(A1.VALORVENDA_DESC, 0) AS NUMERIC(18,2)) ELSE 0 END) AS Junho,
    SUM(CASE WHEN EXTRACT(MONTH FROM A1.ENTREGUE_DT) = 7 THEN CAST(COALESCE(A1.VALORVENDA_DESC, 0) AS NUMERIC(18,2)) ELSE 0 END) AS Julho,
    SUM(CASE WHEN EXTRACT(MONTH FROM A1.ENTREGUE_DT) = 8 THEN CAST(COALESCE(A1.VALORVENDA_DESC, 0) AS NUMERIC(18,2)) ELSE 0 END) AS Agosto,
    SUM(CASE WHEN EXTRACT(MONTH FROM A1.ENTREGUE_DT) = 9 THEN CAST(COALESCE(A1.VALORVENDA_DESC, 0) AS NUMERIC(18,2)) ELSE 0 END) AS Setembro,
    SUM(CASE WHEN EXTRACT(MONTH FROM A1.ENTREGUE_DT) = 10 THEN CAST(COALESCE(A1.VALORVENDA_DESC, 0) AS NUMERIC(18,2)) ELSE 0 END) AS Outubro,
    SUM(CASE WHEN EXTRACT(MONTH FROM A1.ENTREGUE_DT) = 11 THEN CAST(COALESCE(A1.VALORVENDA_DESC, 0) AS NUMERIC(18,2)) ELSE 0 END) AS Novembro,
    SUM(CASE WHEN EXTRACT(MONTH FROM A1.ENTREGUE_DT) = 12 THEN CAST(COALESCE(A1.VALORVENDA_DESC, 0) AS NUMERIC(18,2)) ELSE 0 END) AS Dezembro
FROM
    ATENDIMENTO_A1 A1
INNER JOIN CLIENTE CL ON CL.CODIGO = A1.CODIGO_CLIENTE
INNER JOIN MEDICO ME ON ME.CODIGO = A1.CODIGO_MEDICO
LEFT JOIN MEDICO_CR CR ON ME.CODIGO_CONSELHO_REGIONAL = CR.CODIGO
LEFT JOIN MEDICO_ESPECIALIDADE ESPEC ON ESPEC.CODIGO = ME.CODIGO_MEDICO_ESPECIALIDADE
INNER JOIN FUNCIONARIO FU ON FU.CODIGO = IIF(A1.STATUS_MOV = 0, A1.CADASTRO_LJ, A1.AVIADA_CF)
INNER JOIN (
    SELECT 
        MR.CODIGO_MEDICO, 
        MIN(RP.CODIGO) as CODIGO, 
        MIN(RP.NOMEFUNCIONARIO) AS NOMEFUNCIONARIO
    FROM 
        MEDICO_REPRESENTANTE MR
    LEFT JOIN 
        FUNCIONARIO RP ON MR.CODIGO_FUNCIONARIO = RP.CODIGO ";
    if (!empty($representantesSelecionados)) {
        $visitadoresStr = implode(',', $representantesSelecionados);
        $query .= " AND RP.CODIGO IN ({$visitadoresStr})";
    }
    $query .= " GROUP BY 
        MR.CODIGO_MEDICO
) RP ON ME.CODIGO = RP.CODIGO_MEDICO

WHERE 
    A1.TIPO_ATENDIMENTO = 1
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 (!empty($operacoes)) {
    //     $query .= " AND A1.CODIGO_TIPOOPERACAO NOT IN ($operacoes)";
    // }
    if (isset($filial) and $filial != 'Todos') {
        $query .= "
    AND A1.AVIADA_LJ IN ($filial)";
    }

    if (!empty($medicosSelecionados)) {
        $query .= "
    AND ME.CODIGO IN (" . implode(',', $medicosSelecionados) . ")";
    }

    if (!empty($representantesSelecionados)) {
        $query .= " AND RP.CODIGO IN (" . implode(',', $representantesSelecionados) . ")";
    }

    $ano = !empty($_GET['ano']) ? $_GET['ano'] : date('Y');

    $query .= "
    AND CAST(A1.ENTREGUE_DT AS DATE) BETWEEN '{$ano}-01-01' AND '{$ano}-12-31'
";

    $query .= "
GROUP BY
    ME.NOMEMEDICO,
    CR.SIGLA,
    ME.CR_ESTADO,
    ME.CRM,
    ESPEC.NOMEESPECIALIDADE
ORDER BY
    Nome_Medico, CRM_COMPLETO;";

    //echo $query; exit;

    $result_query = ibase_query($connection, $query);

    if (!$result_query) {
        die('Erro ao executar a consulta: ' . ibase_errmsg());
    }
}
?>

<!DOCTYPE html>
<html lang="pt-br">
<?php
$pageTitle = "Acompanhamento Médicos"; // 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">
                        <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-3">
                                    <label for="nomeMedico" class="col-form-label">Nome Médico</label>
                                    <select name="nome_medico[]" id="nomeMedico" class="form-control" multiple="multiple" data-placeholder="Todos os médicos">
                                        <?php foreach ($medicos as $medico) {
                                            $selected = in_array((int) $medico['CODIGO'], $medicosSelecionados, true) ? 'selected' : '';
                                            $descricaoMedico = trim($medico['NOME_MEDICO']);

                                            if (!empty($medico['CRM_COMPLETO'])) {
                                                $descricaoMedico .= ' (' . trim($medico['CRM_COMPLETO']) . ')';
                                            }
                                        ?>
                                            <option value="<?php echo (int) $medico['CODIGO']; ?>" <?php echo $selected; ?>><?php echo htmlspecialchars($descricaoMedico, ENT_QUOTES, 'UTF-8'); ?></option>
                                        <?php } ?>
                                    </select>
                                    <small id="nomeMedicoResumo" class="form-text text-muted">Todos os médicos</small>
                                </div>

                                <?php

                                // Exibe o filtro de cidade
                                echo $filtros->filtroCidade($cidade, $cidades, false, '', true, false);

                                ?>
                                <!-- <div class="form-group 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" <?php echo (!isset($cidade) || $cidade == "Todos") ? "selected" : ""; ?>>Todos</option>
                                        <?php foreach ($cidades as $item) : ?>
                                            <option value="<?= $item['MUNIC']; ?>" <?= isset($cidade) && trim($cidade) == trim($item['MUNIC']) ? "selected" : ""; ?>>
                                                <?php echo $item['MUNIC']; ?>
                                            </option>
                                        <?php endforeach; ?>
                                    </select>
                                </div> -->
                                <div class="form-group col-6 col-md-4 col-lg-2">
                                    <label class="col-form-label">Filiais</label>
                                    <select name="filial" class="form-control">
                                        <option value="Todos" <?php if ($filial == 'Todos') echo 'selected'; ?>>Todos</option>
                                        <?php
                                        $listagemFiliais = $filiais->listarFiliais();
                                        foreach ($listagemFiliais as $itens) { ?>
                                            <option value="<?php echo $itens['id']; ?>" <?php if ($itens['id'] == $filial) {
                                                                                            echo 'selected';
                                                                                        } ?>>
                                                <?php echo $itens['nome_filial']; ?>
                                            </option>
                                        <?php } ?>
                                    </select>
                                </div>

                                <div class="form-group col-6 col-md-4 col-lg-2">
                                    <label for="nomeVisitador" class="col-form-label">Representante</label>
                                    <select name="representantes[]" id="nomeVisitador" class="form-control select2" multiple="multiple" style="width: 100%" data-placeholder="Todos os representantes">
                                        <?php foreach ($representantes as $item) {
                                            $selected = in_array((int) $item['CODIGO_FUNCIONARIO'], $representantesSelecionados, true) ? 'selected' : '';
                                        ?>
                                            <option value="<?php echo (int) $item['CODIGO_FUNCIONARIO']; ?>" <?php echo $selected; ?>><?php echo htmlspecialchars(trim($item['NOMEFUNCIONARIO']), ENT_QUOTES, 'UTF-8'); ?></option>
                                        <?php } ?>
                                    </select>
                                    <small id="nomeVisitadorResumo" class="form-text text-muted">Todos os representantes</small>
                                </div>


                                <div class="form-group col-6 col-md-4 col-lg-2">
                                    <label class="col-form-label">Ano <span style="color: red;">*</span></label>
                                    <select name="ano" require class="form-control" id="ano">
                                        <option value=""></option> <!-- Opção vazia -->
                                        <?php
                                        $anoSelecionado = isset($_GET['ano']) ? $_GET['ano'] : date("Y");
                                        $anoAtual = date("Y");

                                        // Gera os anos disponíveis (do ano atual para trás, até 5 anos)
                                        $anosDisponiveis = [];
                                        for ($i = 4; $i >= 0; $i--) {
                                            $anosDisponiveis[] = $anoAtual - $i;
                                        }

                                        // Exibe as opções no <select>
                                        foreach ($anosDisponiveis as $ano) {
                                            $selected = ($ano == $anoSelecionado) ? 'selected' : '';
                                            echo "<option value=\"$ano\" $selected>$ano</option>";
                                        }
                                        ?>
                                    </select>
                                </div>

                                <div class="form-group col-6 col-md-4 col-lg-2">
                                    <label class="col-form-label">Somente Valores</label>
                                    <input type="checkbox" name="valores_brutos" value="S" <?php if (isset($_GET['valores_brutos']) and $_GET['valores_brutos'] == 'S') {
                                                                                                echo 'checked';
                                                                                            } ?> />
                                </div>

                                <input type="hidden" name="pesquisa" value="1">
                                <div class="col-12 col-md-12 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['pesquisa'])) {
                    if (empty($_GET['valores_brutos'])) { ?>
                        <div class="col-12">
                            <div style="display: flex; justify-content: space-between; align-items: center;">
                                <h6>Acompanhamento Mensal (Comparativo Mês a Mês)</h6>
                            </div>
                            <div class="per-page-selector">
                                <select id="per-page-select">
                                    <option value="10">10</option>
                                    <option value="25">25</option>
                                    <option value="50">50</option>
                                    <option value="100">100</option>
                                </select>
                                <span>registros por página</span>
                            </div>
                            <div class="table-container">
                                <table class="table">
                                    <thead>
                                        <tr>
                                            <th class="sticky-col sticky-nome">Nome Médico</th>
                                            <th class="sticky-col sticky-crm">CRM</th>
                                            <?php
                                            $meses = [
                                                'Janeiro',
                                                'Fevereiro',
                                                'Março',
                                                'Abril',
                                                'Maio',
                                                'Junho',
                                                'Julho',
                                                'Agosto',
                                                'Setembro',
                                                'Outubro',
                                                'Novembro',
                                                'Dezembro'
                                            ];

                                            // Adiciona as colunas no formato solicitado (valores brutos e comparativos)
                                            foreach ($meses as $index => $mes) {
                                                // Exibe a coluna do valor bruto
                                                echo "<th scope='col'>{$mes}</th>";

                                                // Exibe a coluna do comparativo mês a mês
                                                if (isset($meses[$index + 1])) {
                                                    $proximoMes = $meses[$index + 1];
                                                    echo "<th scope='col'>{$mes}/{$proximoMes} (Comparativo)</th>";
                                                }
                                            }
                                            ?>
                                        </tr>
                                    </thead>
                                    <tbody>
                                        <?php
                                        while ($row = ibase_fetch_assoc($result_query)) {

                                            $representante = $row['REPRESENTANTES'];
                                            echo "<tr class='text-center'>
                                 <td class='sticky-col sticky-nome'>{$row['NOME_MEDICO']}</td>
                                   <td class='sticky-col sticky-crm'>{$row['CRM_COMPLETO']}</td>";

                                            // Calculando e exibindo os valores brutos e os comparativos mês a mês
                                            for ($i = 0; $i < count($meses); $i++) {
                                                $mesAtual = ($meses[$i]);
                                                if ($mesAtual == 'Março') {
                                                    $mesAtual = 'Marco';
                                                }
                                                $valorMesAtual = $row[strtoupper($mesAtual)] ?? 0;

                                                // Exibe o valor bruto
                                                echo "<td>" . number_format($valorMesAtual, 2, ',', '.') . "</td>";

                                                // Verifica se o próximo mês existe para o comparativo
                                                if (isset($meses[$i + 1])) {
                                                    $mesSeguinte = $meses[$i + 1];
                                                    $valorMesSeguinte = $row[strtoupper($mesSeguinte)] ?? 0;

                                                    // Cálculo do comparativo entre os dois meses
                                                    if ($valorMesAtual > 0) {
                                                        $comparativo = (($valorMesSeguinte - $valorMesAtual) / $valorMesAtual) * 100;
                                                    } else {
                                                        // Se o valor do mês atual for zero, o comparativo é indefinido ou 100% de variação (ou outro valor, conforme sua lógica)
                                                        $comparativo = $valorMesSeguinte > 0 ? 100 : 0;  // Exemplo: 100% de aumento se o valor do mês atual for zero e o mês seguinte for maior que zero
                                                    }

                                                    // Exibe o comparativo
                                                    echo "<td>" . number_format($comparativo, 2, ',', '.') . "%</td>";
                                                }
                                            }

                                            echo "</tr>";
                                        }
                                        ?>
                                    </tbody>
                                </table>

                            <?php } else { ?>
                                <div class="col-12">
                                    <div style="display: flex; justify-content: space-between; align-items: center;">
                                        <h6>Gestão de performance</h6>
                                    </div>
                                    <div class="table-container">
                                        <table class="table">
                                            <thead>
                                                <tr>
                                                    <th class="sticky-col sticky-nome">Nome Médico</th>
                                                    <th class="sticky-col sticky-crm">CRM</th>
                                                    <?php
                                                    $meses = [
                                                        'Janeiro',
                                                        'Fevereiro',
                                                        'Março',
                                                        'Abril',
                                                        'Maio',
                                                        'Junho',
                                                        'Julho',
                                                        'Agosto',
                                                        'Setembro',
                                                        'Outubro',
                                                        'Novembro',
                                                        'Dezembro'
                                                    ];

                                                    // Adiciona as colunas apenas para valores brutos
                                                    foreach ($meses as $mes) {
                                                        echo "<th scope='col'>{$mes} </th>";
                                                    }
                                                    ?>
                                                </tr>
                                            </thead>
                                            <tbody>
                                                <?php
                                                $somas = array_fill(0, count($meses), 0);

                                                // Iterando sobre os resultados da consulta
                                                while ($row = ibase_fetch_assoc($result_query)) {

                                                    echo "<tr class='text-center'>
                                      <td class='sticky-col sticky-nome'>{$row['NOME_MEDICO']}</td>
                                      <td class='sticky-col sticky-crm'>{$row['CRM_COMPLETO']}</td>";

                                                    // Exibindo apenas os valores brutos mês a mês
                                                    foreach ($meses as $i => $mes) {
                                                        $valorMes = $row[strtoupper($mes)] ?? 0;
                                                        echo "<td>" . number_format($valorMes, 2, ',', '.') . "</td>";
                                                        $somas[$i] += $valorMes;
                                                    }

                                                    echo "</tr>";
                                                }
                                                ?>
                                            </tbody>
                                            <tfoot>
                                                <tr class="text-center">
                                                    <th colspan="1">Totais</th>
                                                    <th></th>
                                                    <?php
                                                    foreach ($somas as $soma) {
                                                        echo "<th>" . number_format($soma, 2, ',', '.') . "</th>";
                                                    }
                                                    ?>
                                                </tr>
                                            </tfoot>
                                        </table>

                                    <?php } ?>
                                    <!-- o fechamento da condicao esta aqui, por isso esta aparecendo o mostrar
                                    registro sem pesquisar  -->
                                    </div>
                                </div>

                                <div class="pagination-container">
                                    <div class="pagination-info">
                                        <span id="pagination-info"></span>
                                    </div>
                                    <div class="pagination-controls">
                                        <button id="prev-page" style="background: #fff; margin-right: 10px;" class="paginate_button page-item previous disabled">Anterior</button>
                                        <span id="page-numbers"></span>
                                        <button id="next-page" style="background: #fff; margin-left: 10px;" class="paginate_button page-item next">Próxima</button>
                                    </div>
                                    <!-- local certo, porque pega a condicao certa aqui -->


                                </div>
                            </div>
                        <?php  } ?>
                        </div>
            </div>
        </div>

        <!-- <style>
                                    .pagination-container {
                                        display: flex;
                                        justify-content: space-between;
                                        align-items: center;
                                        margin-top: 20px;
                                        padding: 10px;
                                        background-color: #fff;
                                        border-radius: 5px;
                                    }

                                    .pagination-controls {
                                        display: flex;
                                        gap: 5px;
                                        align-items: center;
                                    }

                                    .pagination-controls button {
                                        padding: 5px 10px;
                                    }

                                    .page-number {
                                        padding: 5px 10px;
                                        margin: 0 2px;
                                        cursor: pointer;
                                        border-radius: 3px;
                                    }

                                    .page-number.active {
                                        background-color: #007bff;
                                        color: white;
                                    }

                                    .per-page-selector {
                                        display: flex;
                                        align-items: center;
                                        gap: 10px;
                                    }

                                    #per-page-select {
                                        padding: 5px;
                                        border-radius: 3px;
                                    }
                                </style> -->


        <!-- 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>
</body>

</html>

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

<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() {
        let currentPage = 1;
        let itemsPerPage = 10;
        const $table = $('.table');
        const $tbody = $table.find('tbody');
        const $rows = $tbody.find('tr');
        const totalItems = $rows.length;

        function updatePagination() {
            const totalPages = Math.ceil(totalItems / itemsPerPage);
            const start = (currentPage - 1) * itemsPerPage;
            const end = Math.min(start + itemsPerPage, totalItems);

            // Hide all rows
            $rows.hide();

            // Show only rows for current page
            $rows.slice(start, end).show();

            // Update pagination info
            $('#pagination-info').text(`Mostrando ${start + 1} a ${end} de ${totalItems} registros`);

            // Update page numbers
            let pageNumbers = '';
            const maxPages = 5;
            let startPage = Math.max(1, currentPage - Math.floor(maxPages / 2));
            let endPage = Math.min(totalPages, startPage + maxPages - 1);

            if (endPage - startPage + 1 < maxPages) {
                startPage = Math.max(1, endPage - maxPages + 1);
            }

            for (let i = startPage; i <= endPage; i++) {
                pageNumbers += `<span class="page-number ${i === currentPage ? 'active' : ''}" data-page="${i}">${i}</span>`;
            }

            $('#page-numbers').html(pageNumbers);

            // Update button states
            $('#first-page, #prev-page').prop('disabled', currentPage === 1);
            $('#last-page, #next-page').prop('disabled', currentPage === totalPages);
        }

        // Event handlers
        $('#per-page-select').change(function() {
            itemsPerPage = parseInt($(this).val());
            currentPage = 1;
            updatePagination();
        });

        $('#first-page').click(function() {
            if (currentPage !== 1) {
                currentPage = 1;
                updatePagination();
            }
        });

        $('#last-page').click(function() {
            const totalPages = Math.ceil(totalItems / itemsPerPage);
            if (currentPage !== totalPages) {
                currentPage = totalPages;
                updatePagination();
            }
        });

        $('#prev-page').click(function() {
            if (currentPage > 1) {
                currentPage--;
                updatePagination();
            }
        });

        $('#next-page').click(function() {
            const totalPages = Math.ceil(totalItems / itemsPerPage);
            if (currentPage < totalPages) {
                currentPage++;
                updatePagination();
            }
        });

        $(document).on('click', '.page-number', function() {
            currentPage = parseInt($(this).data('page'));
            updatePagination();
        });

        // Initial pagination
        updatePagination();
    });
</script>

<style>
    .is-invalido {
        box-shadow: 0 0 5px red !important;
    }
</style>

<style>
    .is-invalido {
        box-shadow: 0 0 5px red !important;
    }

    .dropdown-menu {
        display: none;
        max-height: 300px;
        overflow-y: auto;
        position: absolute;
        z-index: 1000;
    }

    .dropdown-item {
        cursor: pointer;
    }

    .drop {
        position: relative;
        bottom: 30px;
    }

    .table-container {
        position: relative;
        width: 100%;
        overflow-x: auto;
        margin-bottom: 20px;
    }

    .table {
        width: 100%;
        margin-bottom: 0;
        border-collapse: separate;
        border-spacing: 0;
    }

    /* Base cell styles */
    .table th,
    .table td {
        padding: 8px;
        border: 1px solid #dee2e6;
        background-color: #fff;
        white-space: nowrap;
    }

    /* Sticky columns */
    .sticky-col {
        position: sticky;
        background-color: #fff;
        z-index: 1;
    }

    /* Nome Médico column */
    .sticky-nome {
        left: 0;
        min-width: 250px;
        border-right: 2px solid #dee2e6 !important;
    }

    /* CRM column */
    .sticky-crm {
        left: 250px;
        min-width: 120px;
        border-right: 2px solid #dee2e6 !important;
    }

    /* Header cells */
    .table thead th {
        background-color: #f8f9fa;
        font-weight: bold;
        text-align: center;
        border-bottom: 2px solid #dee2e6;
    }

    /* Sticky header */
    .table thead th {
        position: sticky;
        top: 0;
        z-index: 2;
    }

    /* Increase z-index for sticky header columns */
    .table thead th.sticky-col {
        z-index: 3;
    }

    /* Add spacing after sticky columns */
    .table td:not(.sticky-col):first-child,
    .table th:not(.sticky-col):first-child {
        padding-left: 16px;
    }

    /* Regular columns minimum width */
    .table td:not(.sticky-col),
    .table th:not(.sticky-col) {
        min-width: 120px;
    }

    /* Text alignment */
    .table td.sticky-nome {
        text-align: left;
    }

    .table td:not(.sticky-nome) {
        text-align: center;
    }

    /* Hover effect */
    .table tbody tr:hover td {
        background-color: #f8f9fa;
    }

    /* Pagination Styles */
    .pagination-container {
        display: flex;
        justify-content: space-between;
        align-items: center;
        margin-top: 15px;
        padding: 10px;
        background-color: #f8f9fa;
        border: 1px solid #dee2e6;
        border-radius: 4px;
    }

    .pagination {
        display: flex;
        list-style: none;
        padding: 0;
        margin: 0;
    }

    .pagination li {
        margin: 0 2px;
    }

    .pagination li a {
        padding: 6px 12px;
        border: 1px solid #dee2e6;
        color: #007bff;
        text-decoration: none;
        border-radius: 4px;
        cursor: pointer;
    }

    .pagination li.active a {
        background-color: #007bff;
        color: white;
        border-color: #007bff;
    }

    .pagination li a:hover:not(.active) {
        background-color: #e9ecef;
    }

    .per-page-selector {
        display: flex;
        align-items: center;
        gap: 10px;
    }

    .pagination-info {
        color: #6c757d;
    }
</style>

<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-multiselect/1.1.2/css/bootstrap-multiselect.min.css">
<script src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-multiselect/1.1.2/js/bootstrap-multiselect.min.js"></script>


<style>
    .multiselect-container {
        max-height: 400px;
        overflow-y: auto;
    }

    .multiselect-container>li>a>label {
        padding: 3px 20px 3px 40px;
    }

    .multiselect-container>li>a>label>input[type="checkbox"] {
        margin-right: 5px;
    }

    .btn-group {
        width: 100%;
    }

    .multiselect {
        text-align: left;
        width: 100%;
    }

    .multiselect-container .multiselect-filter>.fa-search {
        z-index: 1;
        padding-left: 0.75rem;
    }

    .multiselect-container .multiselect-filter>input.multiselect-search {
        padding-left: 2rem;
    }
</style>

<link href="https://cdn.jsdelivr.net/npm/select2@4.1.0-rc.0/dist/css/select2.min.css" rel="stylesheet" />
<link href="https://cdn.jsdelivr.net/npm/select2-bootstrap-5-theme@1.3.0/dist/select2-bootstrap-5-theme.min.css" rel="stylesheet" />
<script src="https://cdn.jsdelivr.net/npm/select2@4.1.0-rc.0/dist/js/select2.min.js"></script>
<script>
    $(document).ready(function() {
        $('#nomeMedico').select2({
            theme: 'bootstrap-5',
            width: '100%',
            placeholder: 'Todos os médicos',
            closeOnSelect: false,
            language: {
                noResults: function() {
                    return 'Nenhum médico encontrado';
                },
                searching: function() {
                    return 'Pesquisando...';
                }
            }
        });

        function atualizarResumoMedicos() {
            const selecionados = $('#nomeMedico').select2('data').filter(function(item) {
                return item.id !== '';
            });
            const nomes = selecionados.map(function(item) {
                return item.text;
            });

            if (nomes.length === 0) {
                $('#nomeMedicoResumo').text('Todos os médicos');
                return;
            }

            if (nomes.length <= 2) {
                $('#nomeMedicoResumo').text(nomes.join(', '));
                return;
            }

            $('#nomeMedicoResumo').text(nomes.length + ' médicos selecionados');
        }

        $('#nomeVisitador').select2({
            theme: 'bootstrap-5',
            width: '100%',
            closeOnSelect: false,
            language: {
                noResults: function() {
                    return "Nenhum resultado encontrado";
                },
                searching: function() {
                    return "Pesquisando...";
                }
            }
        });

        function atualizarResumoRepresentantes() {
            const selecionados = $('#nomeVisitador').select2('data').filter(function(item) {
                return item.id !== '';
            });
            const nomes = selecionados.map(function(item) {
                return item.text;
            });

            if (nomes.length === 0) {
                $('#nomeVisitadorResumo').text('Todos os representantes');
                return;
            }

            if (nomes.length <= 2) {
                $('#nomeVisitadorResumo').text(nomes.join(', '));
                return;
            }

            $('#nomeVisitadorResumo').text(nomes.length + ' representantes selecionados');
        }

        $('#nomeVisitador').on('change', atualizarResumoRepresentantes);
        $('#nomeMedico').on('change', atualizarResumoMedicos);
        atualizarResumoMedicos();
        atualizarResumoRepresentantes();
    });
</script>
<style>
    .select2-container--bootstrap-5 .select2-selection {
        border: 1px solid #ced4da;
        min-height: 38px;
    }

    .select2-container--bootstrap-5 .select2-selection--multiple .select2-selection__rendered {
        display: flex;
        flex-wrap: nowrap;
        gap: 4px;
        overflow: hidden;
        white-space: nowrap;
    }

    .select2-container--bootstrap-5 .select2-selection--multiple .select2-selection__choice {
        background-color: #e9ecef;
        border: 1px solid #ced4da;
        border-radius: 4px;
        padding: 2px 6px;
        margin: 2px;
        max-width: 150px;
        overflow: hidden;
        text-overflow: ellipsis;
    }

    #nomeMedico + .select2-container .select2-selection--multiple,
    #nomeVisitador + .select2-container .select2-selection--multiple {
        min-height: 38px;
        max-height: 38px;
        overflow: hidden;
    }

    /* Remove o select adicional */
    .select2-container--bootstrap-5 .select2-selection__placeholder {
        display: none;
    }

    .select2-container--bootstrap-5 .select2-selection--multiple::after {
        display: none;
    }

    .select2-container--bootstrap-5 .select2-selection--multiple .select2-search {
        flex: 1;
        min-width: 100px;
    }

    /* Ajusta o espaçamento do container */
    .select2-container {
        margin-bottom: 0 !important;
    }

    .select2-container--bootstrap-5 {
        margin-bottom: 0 !important;
    }
</style>