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

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

$cidades = $consulta_bb->get_cidades();
$filiais = $consulta_bb->get_filiais();
$etapas = $consulta_bb->get_etapaFirebird();

// Função para pegar a data atual como valor padrão inicial
if (!isset($_GET['data'])) {
    $hojeFormatado = date('Y-m-d');
} else {
    $hojeFormatado = $_GET['data'] ?? '';
}

// Função para pegar a data final do mês como valor padrão final 
if (!isset($_GET['data_ate'])) {
    $data_ate = date('Y-m-t');
} else {
    $data_ate = $_GET['data_ate'] ?? '';
}

// Ajuste no ano e mês baseado na data inicial (hojeFormatado)
if (!empty($hojeFormatado)) {
    $ano = date('Y', strtotime($hojeFormatado));
    $mes = date('m', strtotime($hojeFormatado));
} else {
    $ano = date('Y');
    $mes = date('m');
}

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

if (strtoupper($cidade) === "TODOS") {
    $cidade = '';
}

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

if (strtoupper($etapa) === "TODOS") {
    $etapa = '';
}

$filial = isset($_GET['filial']) ? strtoupper(trim($_GET['filial'])) : null;

if (strtoupper($filial) === "TODOS") {
    $filial = '';
}

$filialDestino = isset($_GET['filial_destino']) ? strtoupper(trim($_GET['filial_destino'])) : null;

if (strtoupper($filialDestino) === "TODOS") {
    $filialDestino = '';
}

$filialOrigem = isset($_GET['filial_origem']) ? strtoupper(trim($_GET['filial_origem'])) : null;

if (strtoupper($filialOrigem) === "TODOS") {
    $filialOrigem = '';
}

$operacoes_select = $_GET['operacao'] ?? null;

// Consulta para buscar as etapas
$query_input_etapa = "SELECT etp.posicao||etp.cdetapa as cod_etapa, etp.descricao FROM FC12540 etp WHERE etp.descricao IS NOT NULL
AND etp.descricao <> '' ";
$result_input_etapa = ibase_query($connection, $query_input_etapa);

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

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

// Sempre gera o log de pesquisa e executa a consulta, pois a URL já contém os filtros
gerarLog(
    5, // tipo de log (acesso)
    $basePath, // id do módulo
    $_SESSION['CodUsuario'],
    $_SESSION['NomeUsuario']
);

$result_geral = $consulta_leadTime->leadTimeDetalhamentoFuncionario($hojeFormatado, $filial, $filialOrigem, $filialDestino, $etapa, $data_ate, $operacoes_select);


?>

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

<style>
    /* Outros estilos */

    .dataTables_length {
        float: left;
        /* Alinha o seletor de registros por página à esquerda */
    }

    .dataTables_filter {
        float: right;
        /* Alinha o campo de busca à direita */
        text-align: right;
        /* Alinha o texto dentro da busca à direita */
    }

    .dataTables_info {
        float: left;
        /* Alinha a informação de paginação à esquerda */
    }



    /* Mais estilos */
</style>


<link href="https://cdn.jsdelivr.net/npm/select2@4.1.0-rc.0/dist/css/select2.min.css" rel="stylesheet" />
<?php
$pageTitle = "PCP - Lead Time"; // 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-->

    <!-- ============================================================== -->
    <!-- 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-6 text-left">
                        <form method="get" action="detalhamento_funcionarios.php" id="indexForm">
                            <h3>Lead Time - Detalhamento por funcionários</h3>
                    </div>
                    <div class="col-6 text-right">
                        <a href="index.php" class="btn btn-light">
                            <i class="mdi mdi-keyboard-backspace"></i> Voltar
                        </a>
                        <!-- <button onclick="goBack()" class="btn btn-light"><i class="mdi mdi-keyboard-backspace"></i> Voltar</button> -->
                    </div>


                    <div class=" col-3">
                        <label for="cidade" class="col-form-label">Cidade</label>
                        <select id="cidade" name="cidade" class="form-control" oninput="validarCampo('cidade', this.value)">
                            <?php
                            // Se $mostrarTodos for true, exibe "Todos", senão exibe "Selecione"
                            echo '<option value="Todos"' . (!isset($cidade) || $cidade == "Todos" ? ' selected' : '') . '>' . ($mostrarTodos ? 'Todos' : 'Selecione') . '</option>';

                            foreach ($cidades as $item) {
                                $selected = (isset($cidade) && $cidade == trim($item['id_cidade'])) ? ' selected' : '';
                                echo '<option value="' . trim($item['id_cidade']) . '"' . $selected . '>' . trim($item['nome_cidade']) . '</option>';
                            }
                            ?>
                        </select>
                    </div>
                    <?php
                    echo '<div class=" col-3">';
                    echo '<label for="filial" class="col-form-label">Filial Estoque:</label>';
                    echo '<select id="filial" name="filial" class="form-control">';


                    // Adiciona a opção "Todos" com os IDs concatenados
                    echo '<option value="Todos" ' . (($filial === 'Todos') ? ' selected' : '') . '>' .  'Selecione' . '</option>';

                    // Adiciona as filiais disponíveis
                    foreach ($filiais as $item) {
                        if ($filial === 'Todos') {
                            $selected =  '';
                        } else {
                            $selected = ($filial == $item['ID']) ? ' selected' : '';
                        }
                        echo '<option value="' . $item['ID'] . '" data-cidade="' . trim($item['ID_REFERENCIA']) . '"' . $selected . '>Filial ' . $item['ID'] . '</option>';
                    }

                    echo '</select>';
                    echo '</div>';
                    ?>

                    <!--NOVA BUSCA DE FILIAL ORIGEM -->

                    <?php
                    // Verifica se uma filial de destino foi selecionada anteriormente e define o valor padrão
                    $filialOrigemSelecionada = isset($_COOKIE['filialOrigemSelecionada']) ? $_COOKIE['filialOrigemSelecionada'] : 'Todos';

                    echo '<div class="col-2">';
                    echo '<label for="filialOrigem" class="col-form-label">Filial Origem:</label>';
                    echo '<select id="filiaisOrigem" name="filial_origem" class="form-control">';


                    // Adiciona a opção "Todos" com os IDs concatenados
                    echo '<option value="Todos" ' . (($filialOrigem === 'Todos') ? ' selected' : '') . '>' .  'Selecione' . '</option>';

                    // Adiciona as filiais disponíveis
                    foreach ($filiais as $item) {
                        if ($filialOrigem === 'Todos') {
                            $selected =  '';
                        } else {
                            $selected = ($filialOrigem == $item['ID']) ? ' selected' : '';
                        }
                        echo '<option value="' . $item['ID'] . '" data-cidade="' . trim($item['ID_REFERENCIA']) . '"' . $selected . '>Filial ' . $item['ID'] . '</option>';
                    }

                    echo '</select>';
                    echo '</div>';
                    ?>

                    <!--FIM NOVO SELECT PARA FILIAL ORIGEM-->

                    <!--NOVA BUSCA DE FILIAL DESTINO -->

                    <?php
                    // Verifica se uma filial de destino foi selecionada anteriormente e define o valor padrão
                    $filialDestinoSelecionada = isset($_COOKIE['filialDestinoSelecionada']) ? $_COOKIE['filialDestinoSelecionada'] : 'Todos';

                    echo '<div class="col-2">';
                    echo '<label for="filialDestino" class="col-form-label">Filial Destino:</label>';
                    echo '<select id="filialDestino" name="filial_destino" class="form-control">';


                    // Adiciona a opção "Todos" com os IDs concatenados
                    echo '<option value="Todos" ' . (($filialDestino === 'Todos') ? ' selected' : '') . '>' .  'Selecione' . '</option>';

                    // Adiciona as filiais disponíveis
                    foreach ($filiais as $item) {
                        if ($filialDestino === 'Todos') {
                            $selected =  '';
                        } else {
                            $selected = ($filialDestino == $item['ID']) ? ' selected' : '';
                        }
                        echo '<option value="' . $item['ID'] . '" data-cidade="' . trim($item['ID_REFERENCIA']) . '"' . $selected . '>Filial ' . $item['ID'] . '</option>';
                    }

                    echo '</select>';
                    echo '</div>';
                    ?>

                    <!--FIM NOVO SELECT PARA FILIAL DESTINO-->

                    <?php // Exibe o filtro de etapa
                    echo $filtros->filtroEtapaLeadTime($etapa, $etapas); ?>

                    <div class="col-2">
                        <label for="cliente" class="col-form-label">Data inicial:</label>
                        <input type="date" class="form-control" id="data_inicial" name="data" placeholder="Cliente" value="<?php echo $hojeFormatado; ?>">

                    </div>

                    <div class="col-2">
                        <label for="cliente" class="col-form-label">Data final:</label>
                        <input type="date" class="form-control" id="data_final" require="require" name="data_ate" value="<?php echo $data_ate ?? ''; ?>">

                    </div>

                    <?php echo $filtros->filtroOperacoesLeadTime($operacoes_select);?>

                    <div class="col-12 text-right mt-3">
                        <a href="index.php?data=<?php echo date('Y-m-d'); ?>" class="btn btn-warning mr-2"><i class="mdi mdi-plus"></i> Limpar</a>
                        <button name="pesquisar" class="btn btn-primary" type="submit">Pesquisar</button>
                    </div>
                    </form>
                </div>
            </div>
            <?php if ($result_geral) { ?>
                <div class="card-box mt-3">
                    <div class="row align-items-center">

                        <div class="col-12 text-center">

                            <div class="col-12 text-center">

                                <h6>Lista de Fórmulas</h6>

                            </div>

                            <div class="card">
                                <div class="card-body">

                                    <ul class="nav nav-tabs">
                                        <li class="nav-item">
                                            <a href="#hoje" data-bs-toggle="tab" aria-expanded="true" class="nav-link active">
                                                Dia - <?php echo formataData($hojeFormatado); ?>
                                            </a>
                                        </li>
                                    </ul>
                                    <div class="tab-content">

                                        <div class="tab-pane show active" id="hoje">
                                            <div class="d-flex justify-content-between align-items-center">
                                                <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>
                                                    <input type="text" id="pesquisa" class="form-control" placeholder="Pesquisar" style="width: 200px;">
                                                </div>
                                            </div>
                                            <br>
                                            <table id="minhaTabela" class="table table-bordered table-hover table-sm">
                                                <thead class="thead-light">
                                                    <tr>
                                                        <th scope="col">Código do Funcionários</th>
                                                        <th scope="col">Nome do Funcionários</th>
                                                        <th scope="col">QTD Fórmulas</th>
                                                        <th scope="col">Tempo Médio Fórmulas</th>
                                                        <th scope="col">Total Tempo Etapa</th>
                                                    </tr>
                                                </thead>
                                                <tbody> 
                                                    <?php
                                                    foreach ($result_geral as $row) {
                                                        $tempo_na_etapa = $row['TEMPO_TOTAL_ETAPA']; // tempo total em minutos
                                                        $qtd_formulas = (int)$row['QTD_FORMULAS'];

                                                        // Tempo total formatado
                                                        $horas_total = floor($tempo_na_etapa / 60);
                                                        $minutos_total = fmod($tempo_na_etapa, 60);
                                                        $tempo_formatado = $horas_total . ' horas ' . $minutos_total . ' minutos';

                                                        // Cálculo do tempo médio por fórmula
                                                        if ($qtd_formulas > 0) {
                                                            $tempo_medio_minutos = $tempo_na_etapa / $qtd_formulas;
                                                            $horas_medio = floor($tempo_medio_minutos / 60);
                                                            $minutos_medio = fmod($tempo_medio_minutos, 60);
                                                            $tempo_medio_etapa = $horas_medio . ' horas ' . round($minutos_medio) . ' minutos';
                                                        } else {
                                                            $tempo_medio_etapa = '0 horas 0 minutos';
                                                        }


                                                    ?>
                                                        <tr>
                                                            <td>
                                                            <a href="detalhamento_formulas.php?funcionario=<?= urlencode($row['COD_FUNCIONARIO']) ?>&etapa=<?= urlencode($_GET['etapa'])?>&cidade=<?= urlencode($_GET['cidade'] ?? '') ?>&filial=<?= urlencode($_GET['filial'] ?? '') ?>&filial_origem=<?= urlencode($_GET['filial_origem'] ?? '') ?>&filial_destino=<?= urlencode($_GET['filial_destino'] ?? '') ?>&data=<?= urlencode($_GET['data'] ?? '') ?>&data_ate=<?= urlencode($_GET['data_ate'] ?? '') ?>">
                                                                <?= htmlspecialchars($row['COD_FUNCIONARIO']) ?>
                                                            </a>
                                                            </td>
                                                            <td><?= htmlspecialchars($row['NOMEFUN']) ?></td>
                                                            <td><?= htmlspecialchars($row['QTD_FORMULAS']) ?></td>
                                                            <td><?= htmlspecialchars($tempo_medio_etapa) ?></td>
                                                            <td><?= htmlspecialchars($tempo_formatado) ?></td>
                                                        </tr>
                                                    <?php
                                                    }

                                                    if (!$result_geral) {
                                                        echo "<tr><td colspan='8'>Nenhum registro encontrado para hoje.</td></tr>";
                                                    }

                                                    ?>
                                                </tbody>
                                            </table>
                                            <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 -->
                                            <?php } ?>

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

                                    </div>
                                </div>
                            </div> <!-- end card-->
                        </div>
                    </div>
                </div>
        </div> <!-- end container -->
    </div>
    <!-- ============================================================== -->
    <!-- End Page content -->
    <!-- ============================================================== -->

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

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


    <!-- Right bar overlay-->
    <div class="rightbar-overlay"></div>

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


    <!-- Init js-->
    <script src="../../assets/js/pages/form-advanced.init.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>


    <script src="https://cdn.jsdelivr.net/npm/select2@4.1.0-rc.0/dist/js/select2.min.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">


    <!-- DataTables FixedHeader -->
    <link rel="stylesheet" href="https://cdn.datatables.net/fixedheader/3.3.2/css/fixedHeader.dataTables.min.css">
    <script src="https://cdn.datatables.net/fixedheader/3.3.2/js/dataTables.fixedHeader.min.js"></script>

    <!-- DataTables FixedColumns -->
    <link rel="stylesheet" href="https://cdn.datatables.net/fixedcolumns/4.3.0/css/fixedColumns.dataTables.min.css">
    <script src="https://cdn.datatables.net/fixedcolumns/4.3.0/js/dataTables.fixedColumns.min.js"></script>

    <script>
        $(document).ready(function() {
            // Inicializa o Select2 no campo de seleção de ano
            $('#etapa').select2({
                placeholder: "Selecione",
                dropdownParent: $('body'), // Força o dropdown a abrir para baixo
                dropdownAutoWidth: true, // Ajusta a largura automaticamente
                language: {
                    searching: function() {
                        return "Procurando...";
                    }
                }
            }).on("select2:open", function() {
                // Garante que o dropdown abrirá para baixo
                $('.select2-dropdown').addClass('open-down');
            });
        });
    </script>

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

    <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('minhaTabela');
            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>
</body>

</html>