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

// Log de acesso
gerarLog(
    1,
    $basePath,
    $_SESSION['CodUsuario'],
    $_SESSION['NomeUsuario']
);

$consulta_bb = new ConsultaBancoDeDados();
$filtros = new Filtros();
$queryProdutividade = new QueryProdutividade($connection, $connectionmysql);

// Função auxiliar para definir classe do badge
function getBadgeClass($percentage)
{
    if ($percentage <= 69) {
        return 'badge-danger';
    } elseif ($percentage >= 70 && $percentage <= 89) {
        return 'badge-warning';
    } elseif ($percentage >= 90) {
        return 'badge-primary';
    } else {
        return 'badge-success';
    }
}

// Data atual e formatos
$hoje = new DateTime();
$hojeFormatado = $hoje->format('Y-m-d');
$dataOntem = date('Y-m-d', strtotime('-1 day', strtotime($hojeFormatado)));
$mesAtual = date('m', strtotime($hojeFormatado));
$anoAtual = date('Y', strtotime($hojeFormatado));

require '../querys/query-filiais.php';
$filiais = new Filiais($connectionmysql);
//$cidades = $consulta_bb->getCidadesFiliais();
$cidades = $consulta_bb->get_cidades();
$etapas = $consulta_bb->get_etapaFirebird();

$encontroualgumregistro = false;

// Filtros recebidos via GET
$cidade = $_GET['cidade'] ?? null;
$ano = $_GET['ano'] ?? null;
$mes = $_GET['mes'] ?? null;
$filial = $_GET['filial'] ?? null;
$etapa = $_GET['etapa'] ?? [];
$requisicao = $_GET['requisicao'] ?? null;
$paciente = $_GET['paciente'] ?? null;
$nome_funcionario = $_GET['nome_funcionario'] ?? null;
$tipo_etapa = $_GET['tipo_etapa'] ?? 'geral'; // novo filtro (geral/etapa)
$data_inicio = $_GET['DataInicial'] ?? null;
$data_fim = $_GET['DataFinal'] ?? null;

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

    gerarLog(
        5,
        $basePath,
        $_SESSION['CodUsuario'],
        $_SESSION['NomeUsuario']
    );
    try {
        // Só define o intervalo padrão se as datas NÃO forem enviadas
        if (empty($data_inicio) || empty($data_fim)) {
            $datas = $queryProdutividade->getDatasIntervalo($mes, $ano);
            $data_inicio = $datas['data_inicio'];
            $data_fim = $datas['data_fim'];
        }

        if ($tipo_etapa === 'etapa' && !empty($etapa)) {
            $query_geral_etapa = $queryProdutividade->getQueryEtapa($nome_funcionario, $data_inicio, $data_fim, $etapa);
            $result_geral = $queryProdutividade->executarQuery($query_geral_etapa, 'firebird');
        } else if ($tipo_etapa === 'geral') {
            $query_geral_nova = $queryProdutividade->getQueryGeralNova($data_inicio, $data_fim, !empty($etapa) ? $etapa : null);
            $result_geral = $queryProdutividade->executarQuery($query_geral_nova, 'firebird');
        }

        // Consultas auxiliares
        $query_processo_final = $queryProdutividade->ProcessoFinal($data_inicio, $data_fim);
        $result_processo_final = $queryProdutividade->executarQuery($query_processo_final, 'firebird');

        // Calcular intervalo para getTempoTrabalhado()
        $dataInicioObj = new DateTime($data_inicio);
        $dataFimObj = new DateTime($data_fim);

        $data_inicio_tempo = $dataInicioObj->format('Y-m-01');
        $data_fim_tempo = $dataFimObj->format('Y-m-t');

        $query_tempo_trabalhado = $queryProdutividade->getTempoTrabalhado(null, $data_inicio_tempo, $data_fim_tempo);
        $result_tempo_trabalhado = $queryProdutividade->executarQuery($query_tempo_trabalhado, 'firebird');

        // Outras consultas MySQL (metas e adições)
        $query_meta_etapa = $queryProdutividade->getMetaEtapa($ano, $mes, $filial, $etapa);
        $result_meta_etapa = $queryProdutividade->executarQuery($query_meta_etapa, 'mysql');

        $query_adicoes = $queryProdutividade->getAdicoes($ano, $mes, $etapa);
        $result_adicoes = $queryProdutividade->executarQuery($query_adicoes, 'mysql');

        $query_metas = $queryProdutividade->getMetas($ano, $mes, $etapa);
        $result_metas = $queryProdutividade->executarQuery($query_metas, 'mysql');

        // Conversões para arrays
        $metas_etapas = [];
        while ($row2 = $result_meta_etapa->fetch_assoc()) {
            $metas_etapas[] = $row2;
        }

        $adicao = [];
        while ($row_adicao = $result_adicoes->fetch_assoc()) {
            $adicao[] = $row_adicao;
        }

        $metas = [];
        while ($row_meta = $result_metas->fetch_assoc()) {
            $metas[] = $row_meta;
        }
    } catch (Exception $e) {
        die('Erro: ' . $e->getMessage());
    }
}
?>


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

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



<?php
$pageTitle = "PCP - Produtividade"; // 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 align-items-center">

                    <div class="col-12">
                        <form method="get" action="index.php" id="indexForm" onsubmit="return validarFormulario();">
                            <h3>Produtividade por Hora</h3>
                    </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="tipo_etapa" class="col-form-label">Geral/Etapa</label>
                        <select id="tipo_etapa" name="tipo_etapa" class="form-control" onchange="atualizarFiltroEtapa()">
                            <option value="geral" <?php echo (isset($tipo_etapa) && $tipo_etapa == "geral") ? "selected" : ""; ?>>Geral</option>
                            <option value="etapa" <?php echo (isset($tipo_etapa) && $tipo_etapa == "etapa") ? "selected" : ""; ?>>Etapa</option>
                        </select>
                    </div>

                    <div class="form-group col-6 col-md-4 col-lg-2">
                        <label for="etapa" class="col-form-label">Etapa</label>
                        <select id="etapa" name="etapa[]" class="form-control" multiple>
                            <?php foreach ($etapas as $etapa_item): ?>
                                <option value="<?php echo $etapa_item['CODIGO_ETAPA']; ?>"
                                    <?php echo (in_array($etapa_item['CODIGO_ETAPA'], (array)$etapa) ? 'selected' : ''); ?>>
                                    <?php echo $etapa_item['NOME_ETAPA']; ?>
                                </option>
                            <?php endforeach; ?>
                        </select>
                    </div>

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

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

                    <div class="form-group col-6 col-md-4 col-lg-2">
                        <label for="DataInicial" class="col-form-label">Data Inicial</label>
                        <input type="date" id="DataInicial" name="DataInicial" class="form-control" value="<?php echo isset($data_inicio) ? $data_inicio : ''; ?>" oninput="validarCampo('DataInicial', this.value)">
                    </div>

                    <div class="form-group col-6 col-md-4 col-lg-2">
                        <label for="DataFinal" class="col-form-label">Data Final</label>
                        <input type="date" id="DataFinal" name="DataFinal" class="form-control" value="<?php echo isset($data_fim) ? $data_fim : ''; ?>" oninput="validarCampo('DataFinal', this.value)">
                    </div>

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

                    </div>
                    <div class="col-12 col-md-12 col-lg-12 d-flex mt-3" style="align-items:center;justify-content: end;">
                        <div>
                            <a href="index.php" class="btn btn-warning mr-2"><i class="mdi mdi-plus"></i> Limpar</a>
                        </div>
                        <div>
                            <button name="pesquisar" class="btn btn-primary" type="submit">Pesquisar</button>
                        </div>
                    </div>

                    </form>
                </div>
            </div>
            <?php if (isset($_GET['pesquisar'])) { ?>
                <div class="card-box ">
                    <div class="row align-items-center">
                        <div class="col-12 text-center">
                            <div class="col-12">
                                <div class="row">
                                    <div class="col-12">
                                        <table id="minhaTabela" class="table table-bordered table-hover table-sm" style="width:100%; text-align: center;">
                                            <thead class="thead-light">
                                                <tr>
                                                    <?php if (strtolower($tipo_etapa) === 'etapa'): ?>
                                                        <th scope="col">Código Funcionário</th>
                                                        <th scope="col">Funcionário</th>
                                                        <th scope="col">Etapa</th>
                                                        <th scope="col">Qtd Fórmulas</th>
                                                        <th scope="col">Tempo Trabalhado</th>
                                                        <th scope="col">Média por tempo</th>
                                                        <th scope="col">Adição</th>
                                                    <?php else: ?>
                                                        <th scope="col">Processo</th>
                                                        <th scope="col">Total Fórmulas Processo Final</th>
                                                        <th scope="col">Tempo Trabalhado Total</th>
                                                        <th scope="col">Média Geral (fórmulas/hora)</th>
                                                    <?php endif; ?>
                                                </tr>
                                            </thead>

                                            <tbody>
                                                <?php
                                                $totalFormulas = 0;
                                                $totalAdicao = 0;
                                                $totalTempoMinutos = 0;
                                                $hasResults = false;

                                                // 🔹 ETAPA: tabela completa
                                                if (strtolower($tipo_etapa) === 'etapa' && isset($result_geral)) {
                                                    while ($row = ibase_fetch_assoc($result_geral)) {
                                                        $hasResults = true;
                                                        $encontroualgumregistro = true;

                                                        $metaetapa = isset($metas_etapas[0]['soma']) ? $metas_etapas[0]['soma'] : 0;
                                                        $nomefun = $row['MANIPULADOR'];
                                                        $nomeetapa = $row['PROCESSO'];
                                                ?>
                                                        <tr>
                                                            <td><?= htmlspecialchars($row['CDFUN']); ?></td>
                                                            <td><?= htmlspecialchars($nomefun); ?></td>
                                                            <td><?= htmlspecialchars($nomeetapa); ?></td>
                                                            <td><?= htmlspecialchars($row['QTD_TOTAL']); ?></td>
                                                            <td>
                                                                <?php
                                                                try {
                                                                    $query_tempo = $queryProdutividade->getTempoTrabalhado($row['CDFUN'], $data_inicio, $data_fim);
                                                                    $result_tempo = $queryProdutividade->executarQuery($query_tempo, 'firebird');
                                                                    $tempo_row = ibase_fetch_assoc($result_tempo);
                                                                    $tempo_minutos = isset($tempo_row['TEMPO_TRABALHADO_MINUTOS']) ? $tempo_row['TEMPO_TRABALHADO_MINUTOS'] : 0;
                                                                    $tempo_formatado = $queryProdutividade->formatarTempo($tempo_minutos);
                                                                } catch (Exception $e) {
                                                                    $tempo_minutos = 0;
                                                                    $tempo_formatado = '00:00:00';
                                                                }
                                                                echo $tempo_formatado;
                                                                ?>
                                                            </td>
                                                            <td>
                                                                <?php
                                                                $qtdFormula = intval($row['QTD_TOTAL']);
                                                                $media_por_unidade = $queryProdutividade->calcularMediaPorUnidade($qtdFormula, $tempo_minutos);
                                                                echo number_format($media_por_unidade, 2, ',', '.') . ' fórmulas/hora';
                                                                ?>
                                                            </td>
                                                            <td>
                                                                <?php
                                                                $adicaoEncontrada = 0;
                                                                foreach ($adicao as $adicoes) {
                                                                    if ($adicoes['cdfun'] == $row['CDFUN']) {
                                                                        $adicaoEncontrada = $adicoes['adicao'];
                                                                        break;
                                                                    }
                                                                }
                                                                echo htmlspecialchars($adicaoEncontrada);

                                                                $totalFormulas += $qtdFormula;
                                                                $totalAdicao += $adicaoEncontrada;
                                                                $totalTempoMinutos += $tempo_minutos;
                                                                ?>
                                                            </td>
                                                        </tr>
                                                    <?php
                                                    }
                                                }


                                                // 🔹 GERAL: tabela simples (Processo + Total)
                                                elseif (strtolower($tipo_etapa) === 'geral' && isset($result_geral)) {
                                                    // EXECUTAR A QUERY DE TEMPO para o modo GERAL com filtro de etapa
                                                    $query_tempo_geral = $queryProdutividade->getTempoTrabalhado(null, $data_inicio, $data_fim, !empty($etapa) ? $etapa : null);
                                                    $result_tempo_geral = $queryProdutividade->executarQuery($query_tempo_geral, 'firebird');
                                                    $totalFormulasGeral = 0;
                                                    $totalTempoGeralMinutos = 0;

                                                    // Calcular tempo total de todos os colaboradores da etapa selecionada
                                                    while ($row_tempo = ibase_fetch_assoc($result_tempo_geral)) {
                                                        $totalTempoGeralMinutos += isset($row_tempo['TEMPO_TRABALHADO_MINUTOS']) ? $row_tempo['TEMPO_TRABALHADO_MINUTOS'] : 0;
                                                    }

                                                    while ($row = ibase_fetch_assoc($result_geral)) {
                                                        $hasResults = true;
                                                        $encontroualgumregistro = true;

                                                        $qtdFormulas = isset($row['TOTAL_FORMULAS_PROCESSO_FINAL']) ? intval($row['TOTAL_FORMULAS_PROCESSO_FINAL']) : 0;
                                                        $totalFormulasGeral += $qtdFormulas;

                                                        // Calcular média individual de cada processo
                                                        $mediaIndividual = $queryProdutividade->calcularMediaPorUnidade($qtdFormulas, $totalTempoGeralMinutos);
                                                    ?>
                                                        <tr>
                                                            <td><?= htmlspecialchars($row['PROCESSO']); ?></td>
                                                            <td><?= htmlspecialchars($qtdFormulas); ?></td>
                                                            <td><?= $queryProdutividade->formatarTempo($totalTempoGeralMinutos); ?></td>
                                                            <td><?= number_format($mediaIndividual, 2, ',', '.') . ' fórmulas/hora'; ?></td>
                                                        </tr>
                                                <?php
                                                    }

                                                    // Linha de totais no final da tabela
                                                    if ($hasResults) {
                                                        $mediaTotalGeral = $queryProdutividade->calcularMediaPorUnidade($totalFormulasGeral, $totalTempoGeralMinutos);
                                                    }
                                                }
                                                ?>
                                            </tbody>
                                        </table>

                                        <!-- Adiciona a linha com o totalizador -->
                                        <div class="row">
                                            <div class="col-md-12">
                                                <!-- <h4>Total Valor Recebido: R$ <?php echo number_format($totalValorRecebido, 2, ',', '.'); ?></h4> -->
                                            </div>
                                        </div>




                                    </div>

                                </div>


                            </div>
                        </div>
                    </div>
                </div>
            <?php } ?>
        </div>
    </div>
    <!-- ============================================================== -->
    <!-- End Page content -->
    <!-- ============================================================== -->

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

    <div class="rightbar-overlay"></div>

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

    <!-- third party js -->
    <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>

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

    <link href="https://cdnjs.cloudflare.com/ajax/libs/select2/4.1.0-beta.1/css/select2.min.css" rel="stylesheet" />

    <script src="https://cdnjs.cloudflare.com/ajax/libs/select2/4.1.0-beta.1/js/select2.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 order = [
                [1, "asc"]
            ];

            $('#minhaTabela').DataTable({
                "language": {
                    "url": "https://cdn.datatables.net/plug-ins/1.10.21/i18n/Portuguese-Brasil.json"
                },
                "order": order,
                "ordering": true,
                "lengthMenu": [
                    [10, 25, 50, 100, -1],
                    [10, 25, 50, 100, "Todos"]
                ],
                "buttons": [
                    '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>>', // Adicionando "l" para incluir a opção de seleção de quantidade de registros por página
                "dom": '<"top"Bf><"datatable-scroll"t><"bottom d-flex justify-content-between align-items-center"lip><"clear">'

            });
        });
    </script>

    <script>
        $(document).ready(function() {
            $('#etapa').select2({
                width: '100%',
                placeholder: 'Selecione as etapas'
            });

            $('#select_todos_etapas').click(function() {
                if ($(this).is(':checked')) {
                    $('#etapa option').prop('selected', true);
                } else {
                    $('#etapa option').prop('selected', false);
                }
                $('#etapa').trigger('change');
            });
        });
    </script>

    <script>
        // initDropdownFilter('visitador', false, 'filial_representante');
        //initDropdownFilter('medicos', false);

        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() {
            const DataInicialCampo = document.getElementById("DataInicial");
            const DataFinalCampo = document.getElementById("DataFinal");

            const DataInicial = DataInicialCampo.value.trim();
            const DataFinal = DataFinalCampo.value.trim();

            // Garante que a data está no formato completo YYYY-MM-DD
            const regexData = /^\d{4}-\d{2}-\d{2}$/;

            if (!regexData.test(DataInicial) || !regexData.test(DataFinal)) {
                // Não faz nada enquanto a digitação ainda está incompleta
                return;
            }

            // Garante que o ano não é inferior a 1900 (evita casos como 0002)
            const anoFinal = parseInt(DataFinal.split("-")[0]);
            if (anoFinal < 1900) {
                return; // ainda está digitando, ou valor inválido
            }

            removerClasseErro(DataInicialCampo);
            removerClasseErro(DataFinalCampo);

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

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

        document.getElementById("DataFinal").addEventListener('input', function() {
            removerClasseErro(this);
            verificarDatas();
        });
    </script>
    <style>
        .is-invalido {
            box-shadow: 0 0 5px red !important;
        }
    </style>
    <script>
        applyFilter('cidade', 'filial', 'data-cidade', '<?php echo isset($filialselect) ? $filialselect : ''; ?>');



        function closeModalOnOutsideClick(event) {
            const modalElement = document.querySelector('.modal.show');
            if (modalElement && !modalElement.contains(event.target)) {
                const modalInstance = bootstrap.Modal.getInstance(modalElement);
                modalInstance.hide();
            }
        }

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

        window.onload = verificarErroNaURL;

        //REMOVER O CINZA APÓS FECHAR A MODAL E PERMITIR O SCROLL
        var myModalEl = document.getElementById('standard-modal');
        myModalEl.addEventListener('hidden.bs.modal', function(event) {
            var modalsBackdrop = document.getElementsByClassName('modal-backdrop');
            while (modalsBackdrop.length > 0) {
                modalsBackdrop[0].parentNode.removeChild(modalsBackdrop[0]);
            }
            document.body.style.overflow = ''; // Reset overflow
        });
    </script>

    <script>
        function selecionarTodosEtapas(checkbox) {
            var select = document.getElementById('etapa');
            var options = select.options;

            for (var i = 0; i < options.length; i++) {
                options[i].selected = checkbox.checked;
            }
        }
    </script>

    <style>
        /* Estilos para manter a formatação do DataTable */
        .dataTables_wrapper .table {
            margin-bottom: 0 !important;
        }

        #produtividadeTable td {
            vertical-align: middle;
        }

        #produtividadeTable thead th {
            background-color: #f8f9fa;
            border-bottom: 2px solid #dee2e6;
            cursor: pointer;
            position: relative;
            padding-right: 20px;
        }

        #produtividadeTable thead th:after,
        #produtividadeTable thead th:before {
            content: '';
            position: absolute;
            right: 4px;
            width: 0;
            height: 0;
            border-left: 5px solid transparent;
            border-right: 5px solid transparent;
            opacity: 0.3;
        }

        #produtividadeTable thead th:before {
            top: 40%;
            border-bottom: 5px solid #666;
        }

        #produtividadeTable thead th:after {
            bottom: 40%;
            border-top: 5px solid #666;
        }

        #produtividadeTable thead th.asc:before {
            opacity: 1;
        }

        #produtividadeTable thead th.desc:after {
            opacity: 1;
        }

        .dataTables_length select,
        .dataTables_filter input {
            padding: 0.375rem 0.75rem;
            font-size: 0.875rem;
            line-height: 1.5;
            border: 1px solid #ced4da;
            border-radius: 0.25rem;
        }

        .dataTables_info,
        .dataTables_paginate {
            margin-top: 1rem;
        }

        .paginate_button {
            padding: 0.5rem 0.75rem;
            margin-left: 2px;
            line-height: 1.25;
        }
    </style>

    <style>
        .select-container {
            margin-bottom: 1rem;
        }

        .select-all-container {
            display: flex;
            align-items: center;
        }

        select[multiple] {
            width: 100%;
            padding: 5px;
        }

        select[multiple] option {
            padding: 5px;
        }
    </style>

    <style>
        select[multiple] {
            min-height: 200px;
            border: 1px solid #ced4da;
            border-radius: 4px;
        }

        select[multiple] option {
            padding: 8px;
            border-bottom: 1px solid #eee;
        }

        select[multiple] option:hover {
            background-color: #f8f9fa;
        }

        select[multiple] option:checked {
            background-color: #007bff;
            color: white;
        }
    </style>
    <style>
        .linha-totais {
            border-top: 15px solid transparent;
        }

        .is-invalido {
            box-shadow: 0 0 5px red !important;
        }
    </style>
    <script>
        // Função de pesquisa por nome do funcionário
        document.getElementById('pesquisa').addEventListener('input', function() {
            var texto = this.value.toLowerCase();
            var tabela = document.getElementById('produtividadeTable');
            var linhas = tabela.getElementsByTagName('tr');

            for (var i = 1; i < linhas.length; i++) { // Começa do 1 para pular o cabeçalho
                var celulas = linhas[i].getElementsByTagName('td');
                if (celulas.length > 1) { // Verifica se tem células suficientes
                    var encontrou = false;
                    // Percorre todas as células da linha
                    for (var j = 0; j < celulas.length; j++) {
                        var conteudoCelula = celulas[j].textContent || celulas[j].innerText;
                        if (conteudoCelula.toLowerCase().includes(texto)) {
                            encontrou = true;
                            break;
                        }
                    }
                    linhas[i].style.display = encontrou ? '' : 'none';
                }
            }
        });
    </script>
    <script>
        document.addEventListener('DOMContentLoaded', function() {
            const table = document.getElementById('minhaTabela');
            const headers = table.querySelectorAll('thead th');
            let currentSort = {
                column: null,
                asc: true
            };

            headers.forEach((header, index) => {
                header.addEventListener('click', () => {
                    const tbody = table.querySelector('tbody');
                    const rows = Array.from(tbody.querySelectorAll('tr'));

                    // Remove classes de ordenação de todos os headers
                    headers.forEach(h => {
                        h.classList.remove('asc', 'desc');
                    });

                    // Determina a direção da ordenação
                    const isAsc = currentSort.column !== index || !currentSort.asc;
                    currentSort.column = index;
                    currentSort.asc = isAsc;

                    // Adiciona classe de ordenação ao header atual
                    header.classList.add(isAsc ? 'asc' : 'desc');

                    // Ordena as linhas
                    rows.sort((a, b) => {
                        const aValue = a.cells[index].textContent.trim();
                        const bValue = b.cells[index].textContent.trim();

                        // Verifica se os valores são números
                        const aNum = parseFloat(aValue.replace(/[^0-9.-]+/g, ''));
                        const bNum = parseFloat(bValue.replace(/[^0-9.-]+/g, ''));

                        if (!isNaN(aNum) && !isNaN(bNum)) {
                            return isAsc ? aNum - bNum : bNum - aNum;
                        }

                        // Ordenação de texto
                        return isAsc ?
                            aValue.localeCompare(bValue, 'pt-BR') :
                            bValue.localeCompare(aValue, 'pt-BR');
                    });

                    // Reinsere as linhas ordenadas
                    tbody.append(...rows);
                });
            });
        });
    </script>
</body>

</html>