<?php
// Ativa o buffer de saída (Essencial para o AJAX não dar erro)
ob_start();

require_once 'admin_header.php';
?>
<!-- O PHP foi fechado. HTML Abaixo. -->

<!-- ================= BIBLIOTECAS (jQuery + Select2) ================= -->
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
<link href="https://cdn.jsdelivr.net/npm/select2@4.1.0-rc.0/dist/css/select2.min.css" rel="stylesheet" />
<script src="https://cdn.jsdelivr.net/npm/select2@4.1.0-rc.0/dist/js/select2.min.js"></script>

<style>
    /* === ESTILOS VISUAIS === */
    .add-ranking-form { margin-bottom: 20px; }
    .form-group-inline { display: flex; gap: 10px; align-items: center; }
    .form-group-inline input { flex-grow: 1; margin: 0; }
    .rankings-management-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 20px; }
    fieldset { position: relative; border: 1px solid #ddd; padding: 20px; padding-top: 60px; border-radius: 8px; background: white; margin-bottom: 15px;}
    
    /* Área do Título (Legend) */
    legend { 
        font-weight: 600; 
        color: var(--biavatti-dark-blue); 
        font-size: 1.2rem; 
        padding: 0 10px;
        width: auto;
        display: flex;
        align-items: center;
        gap: 10px;
    }
    
    /* Input de Edição do Título */
    input.edit-title-input {
        font-size: 1.1rem;
        font-weight: 600;
        color: #333;
        border: 2px solid #059cee;
        border-radius: 4px;
        padding: 5px 10px;
        min-width: 300px;
        outline: none;
    }

    /* Grupo de Botões (Posicionado no topo à direita) */
    .ranking-actions { 
        position: absolute; 
        top: 15px; 
        right: 15px; 
        display: flex; 
        align-items: center;
        gap: 5px; 
        z-index: 10; 
    }
    
    /* Estilos dos Botões */
    .btn-action { border: none; padding: 6px 12px; border-radius: 4px; cursor: pointer; font-size: 0.85rem; font-weight: 500; transition: background 0.2s;}
    
    /* Cores dos Botões */
    .btn-edit-title { background: #5bc0de; color: white; }
    .btn-edit-title:hover { background: #46b8da; }

    .btn-remove-ranking { background: #d9534f; color: white; }
    .btn-remove-ranking:hover { background: #d43f3a; }
    
    .btn-confirm-save { background-color: #5cb85c; color: white; }
    .btn-confirm-save:hover { background-color: #4cae4c; }

    .btn-cancel-edit { background-color: #777; color: white; }
    .btn-cancel-edit:hover { background-color: #555; }

    /* Containers de Botões */
    .default-buttons, .edit-buttons { display: flex; gap: 5px; }

    /* Estilo do Vencedor */
    .form-group-ranking { display: flex; align-items: flex-start; gap: 10px; margin-bottom: 20px; padding-bottom: 20px; border-bottom: 1px solid #eee; }
    .form-group-ranking:last-child { border-bottom: none; margin-bottom: 0; padding-bottom: 0; }
    .position-badge { font-weight: bold; background-color: #f0f0f0; padding: 10px; border-radius: 5px; min-width: 40px; text-align: center; margin-top: 5px; color: #555;}
    
    .winner-inputs { display: flex; flex-direction: column; gap: 8px; flex-grow: 1; }
    .winner-inputs input, .winner-inputs select { margin-top: 0; }

    .select2-container { width: 100% !important; }
    .select2-container .select2-selection--single { height: 42px; border: 1px solid #ccc; border-radius: 4px; display: flex; align-items: center; }
    .select2-container--default .select2-selection--single .select2-selection__arrow { height: 40px; }

    .btn-add { padding: 12px; background: #059cee; color: white; border: none; border-radius: 5px; cursor: pointer; font-size: 1rem;}
    .btn-save-all { margin-top: 20px; padding: 15px; background: #5cb85c; color: white; width: 100%; border: none; border-radius: 5px; cursor: pointer; font-size: 1.1rem; font-weight: bold;}
    
    .message { padding: 15px; margin-bottom: 20px; border-radius: 5px; text-align: center; font-weight: bold; }
    .message.success { background-color: #dff0d8; color: #3c763d; }
    .message.error { background-color: #f2dede; color: #a94442; }

    @media (max-width: 900px) { .rankings-management-grid { grid-template-columns: 1fr; } }
</style>

<?php
// === LÓGICA PHP (SERVER SIDE) ===

$usuariosFile = '../dados_seguros/usuarios.json';

$usuarios = file_exists($usuariosFile) ? json_decode(file_get_contents($usuariosFile), true) : [];

$configFile = '../dados_seguros/config.json';
$configData = file_exists($configFile) ? json_decode(file_get_contents($configFile), true) : [];
if (!isset($configData['rankings']) || !is_array($configData['rankings'])) {
    $configData['rankings'] = [];
}

$mensagem = ''; $erro = '';

if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    
    // --- 1. AÇÃO: CRIAR OU SALVAR TÍTULO ---
    if (isset($_POST['save_ranking'])) {
        $id = $_POST['ranking_id'];
        $titulo = trim($_POST['ranking_title']);
        
        if (!empty($titulo)) {
            $is_new = false;
            // Backup
            if(file_exists($configFile)) copy($configFile, $configFile . '.backup-' . date('Y-m-d-H') . '.json');

            if (empty($id)) { // Criação
                $is_new = true;
                $newId = uniqid('ranking_');
                $configData['rankings'][] = ['id' => $newId, 'titulo' => $titulo, 'vencedores' => []];
                $mensagem = "Ranking criado com sucesso!";
            } else { // Edição
                foreach ($configData['rankings'] as $i => $ranking) {
                    if ($ranking['id'] === $id) { 
                        $configData['rankings'][$i]['titulo'] = $titulo; 
                        break; 
                    }
                }
            }
            file_put_contents($configFile, json_encode($configData, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE));
            
            // --- RESPOSTA AJAX ---
            if (isset($_POST['ajax_mode'])) {
                ob_clean(); // Limpa tudo o que veio antes
                header('Content-Type: application/json');
                echo json_encode(['status' => 'success', 'novo_titulo' => $titulo, 'is_new' => $is_new]);
                exit; // IMPORTANTE: Mata o script aqui
            }
        } else { $erro = "Título inválido."; }
    }

    // --- 2. AÇÃO: ATUALIZAR VENCEDORES ---
    if (isset($_POST['update_winners'])) {
        if (isset($_POST['winners']) && is_array($_POST['winners'])) {
            if(file_exists($configFile)) copy($configFile, $configFile . '.backup-' . date('Y-m-d-H') . '.json');

            foreach ($configData['rankings'] as $i => $ranking) {
                $rankingId = $ranking['id'];
                if (isset($_POST['winners'][$rankingId])) {
                    $dados = $_POST['winners'][$rankingId];
                    $novosVencedores = [];
                    
                    for ($p = 1; $p <= 3; $p++) {
                        $tipo = $dados['tipo'][$p] ?? 'pessoa';
                        $isPessoa = ($tipo === 'pessoa');
                        $nomeOuUsuario = $isPessoa ? ($dados['usuario'][$p] ?? '') : ($dados['nome'][$p] ?? '');

                        if (!empty($nomeOuUsuario)) {
                            $vencedor = [
                                'posicao' => $p, 
                                'tipo' => $tipo, 
                                'foto' => trim($dados['foto'][$p] ?? ''),
                                'score' => trim($dados['score'][$p] ?? '')
                            ];
                            
                            if ($isPessoa) {
                                $vencedor['usuario'] = $nomeOuUsuario;
                                foreach($usuarios as $u) {
                                    if ($u['usuario'] === $nomeOuUsuario) {
                                        $vencedor['nome'] = $u['nome'];
                                        break;
                                    }
                                }
                                if(!isset($vencedor['nome'])) $vencedor['nome'] = $nomeOuUsuario;
                            } else {
                                $vencedor['nome'] = $nomeOuUsuario;
                            }
                            $novosVencedores[] = $vencedor;
                        }
                    }
                    $configData['rankings'][$i]['vencedores'] = $novosVencedores;
                }
            }
            file_put_contents($configFile, json_encode($configData, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE));
            $mensagem = "Vencedores atualizados com sucesso!";
        }
    }

    // --- 3. AÇÃO: EXCLUIR ---
    if (isset($_POST['delete_ranking'])) {
        if(file_exists($configFile)) copy($configFile, $configFile . '.backup-' . date('Y-m-d-H') . '.json');
        $idDel = $_POST['ranking_id'];
        $configData['rankings'] = array_values(array_filter($configData['rankings'], function($r) use ($idDel) {
            return $r['id'] !== $idDel;
        }));
        file_put_contents($configFile, json_encode($configData, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE));
        $mensagem = "Ranking excluído.";
    }
}
?>

<header>
    <h1>Gerenciar Rankings</h1>
    <a href="logout.php" class="btn-logout">Sair</a>
</header>

<div class="card">
    <?php if ($mensagem): ?><p class="message success"><?= $mensagem ?></p><?php endif; ?>
    <?php if ($erro): ?><p class="message error"><?= $erro ?></p><?php endif; ?>

    <!-- FORM CRIAR NOVO -->
    <form id="form-criar-ranking" class="add-ranking-form">
        <h2>Adicionar Novo Ranking</h2>
        <div class="form-group-inline">
            <input type="text" name="ranking_title" id="novo_titulo" placeholder="Ex: Faturamento Março" required>
            <button type="submit" class="btn-add">Criar Ranking</button>
        </div>
    </form>
    
    <hr class="form-divider">

    <h2>Gerenciar Vencedores</h2>

    <?php if (empty($configData['rankings'])): ?>
        <p style="text-align:center; padding: 20px;">Nenhum ranking cadastrado.</p>
    <?php else: ?>
        <!-- FORM VENCEDORES -->
        <form method="post">
            <div class="rankings-management-grid">
                <?php foreach ($configData['rankings'] as $ranking): 
                    $rid = $ranking['id'];
                    $vencedores = array_column($ranking['vencedores'] ?? [], null, 'posicao');
                ?>
                <!-- CONTAINER COM ID ÚNICO -->
                <fieldset id="ranking-container-<?= $rid ?>">
                    <legend>
                        <span class="display-title"><?= htmlspecialchars($ranking['titulo']) ?></span>
                        <input type="text" class="edit-title-input" value="<?= htmlspecialchars($ranking['titulo']) ?>" style="display:none;">
                    </legend>

                    <!-- BARRA DE BOTÕES -->
                    <div class="ranking-actions">
                        <!-- Botões VISÍVEIS -->
                        <div class="default-buttons">
                            <!-- AQUI: onclick direto chamando a função -->
                            <button type="button" class="btn-action btn-edit-title" 
                                    onclick="iniciarEdicao('<?= $rid ?>')">Editar Título</button>
                            
                            <button type="button" class="btn-action btn-remove-ranking" 
                                    onclick="confirmarExclusao('<?= $rid ?>', '<?= addslashes($ranking['titulo']) ?>')">Excluir</button>
                        </div>

                        <!-- Botões ESCONDIDOS -->
                        <div class="edit-buttons" style="display:none;">
                            <button type="button" class="btn-action btn-confirm-save" 
                                    onclick="salvarTituloNoBanco('<?= $rid ?>', this)">✔ Salvar</button>
                            
                            <button type="button" class="btn-action btn-cancel-edit" 
                                    onclick="cancelarEdicao('<?= $rid ?>')">✖ Cancelar</button>
                        </div>
                    </div>

                    <!-- LOOPS DOS 3 LUGARES -->
                    <?php for ($i = 1; $i <= 3; $i++): $v = $vencedores[$i] ?? []; ?>
                    <div class="form-group-ranking">
                        <span class="position-badge"><?= $i ?>º</span>
                        <div class="winner-inputs">
                            <select name="winners[<?= $rid ?>][usuario][<?= $i ?>]" class="winner-user-select" 
                                style="<?= ($v['tipo'] ?? 'pessoa') === 'pessoa' ? '' : 'display:none' ?>">
                                <option value="">-- Selecione --</option>
                                <?php foreach ($usuarios as $usr): ?>
                                    <option value="<?= htmlspecialchars($usr['usuario']) ?>" 
                                        <?= (isset($v['usuario']) && $v['usuario'] === $usr['usuario']) ? 'selected' : '' ?>>
                                        <?= htmlspecialchars($usr['nome']) ?>
                                    </option>
                                <?php endforeach; ?>
                            </select>

                            <input type="text" name="winners[<?= $rid ?>][nome][<?= $i ?>]" class="winner-clinic-name" 
                                placeholder="Nome da Clínica/Pessoa" value="<?= htmlspecialchars($v['nome'] ?? '') ?>"
                                style="<?= ($v['tipo'] ?? 'pessoa') === 'clinica' ? '' : 'display:none' ?>">

                            <input type="text" name="winners[<?= $rid ?>][foto][<?= $i ?>]" class="image-url-input" 
                                placeholder="Cole a URL da foto" value="<?= htmlspecialchars($v['foto'] ?? '') ?>">
                            
                            <!-- DIV PREVIEW FOTO COM CLASSE RESTAURADA -->
                            <div class="image-preview-container" style="<?= empty($v['foto']) ? 'display:none' : 'margin-top:5px' ?>">
                                <img class="image-preview" src="<?= htmlspecialchars($v['foto'] ?? '') ?>" style="max-height:80px; border-radius:4px; border:1px solid #ccc;">
                            </div>

                            <input type="text" name="winners[<?= $rid ?>][score][<?= $i ?>]" 
                                placeholder="Pontuação / Descrição" value="<?= htmlspecialchars($v['score'] ?? '') ?>">
                            
                            <select name="winners[<?= $rid ?>][tipo][<?= $i ?>]" onchange="toggleWinnerInput(this)">
                                <option value="pessoa" <?= ($v['tipo'] ?? 'pessoa') === 'pessoa' ? 'selected' : '' ?>>Pessoa</option>
                                <option value="clinica" <?= ($v['tipo'] ?? '') === 'clinica' ? 'selected' : '' ?>>Clínica</option>
                            </select>
                        </div>
                    </div>
                    <?php endfor; ?>
                </fieldset>
                <?php endforeach; ?>
            </div>
            
            <button type="submit" name="update_winners" class="btn-save-all">💾 Salvar Vencedores e Pódios</button>
        </form>
    <?php endif; ?>
</div>

<!-- ================= JAVASCRIPT GERAL ================= -->
<script>
    $(document).ready(function() {
        // Inicializa Select2
        $('.winner-user-select').select2({ placeholder: "Busque...", allowClear: true, width: '100%' });
        
        // Esconde select de usuario se for clinica
        $('.winner-user-select').each(function() {
            const type = $(this).closest('.winner-inputs').find('select[name*="[tipo]"]').val();
            if (type !== 'pessoa') $(this).next('.select2-container').hide();
        });

        // Evento Global de Preview de Imagem (esse funciona bem com 'on')
        $(document).on('input', '.image-url-input', function() {
            const url = $(this).val();
            const div = $(this).next('.image-preview-container');
            const img = div.find('img');
            if(url.length > 5) { img.attr('src', url); div.slideDown(); } else { div.slideUp(); }
        });
        
        // Função Global de Toggle Pessoa/Clinica
        window.toggleWinnerInput = function(selectElem) {
            const container = $(selectElem).closest('.winner-inputs');
            if (selectElem.value === 'pessoa') {
                container.find('.winner-user-select').next('.select2-container').show();
                container.find('.winner-clinic-name').hide();
            } else {
                container.find('.winner-user-select').next('.select2-container').hide();
                container.find('.winner-clinic-name').show();
            }
        };
    });

    // ========================================================
    // ======= FUNÇÕES DE EDIÇÃO (EXPOSTAS NO WINDOW) =========
    // ========================================================

    // 1. Iniciar Edição
    window.iniciarEdicao = function(id) {
        console.log("Editando:", id);
        
        // CORREÇÃO: Usamos document.getElementById para ignorar problemas com espaços
        // E envolvemos com $() para usar funções do jQuery
        const cx = $(document.getElementById('ranking-container-' + id));
        
        cx.find('.display-title').hide();           
        cx.find('.edit-title-input').show().focus(); 
        
        cx.find('.default-buttons').hide();          
        cx.find('.edit-buttons').css('display', 'flex'); 
    };

    // 2. Cancelar Edição (CORRIGIDO)
    window.cancelarEdicao = function(id) {
        // CORREÇÃO:
        const cx = $(document.getElementById('ranking-container-' + id));
        
        const originalText = cx.find('.display-title').text();
        cx.find('.edit-title-input').val(originalText).hide();
        cx.find('.display-title').show();           
        
        cx.find('.edit-buttons').hide();
        cx.find('.default-buttons').show();
    };

    // 3. Salvar Título (CORRIGIDO)
    window.salvarTituloNoBanco = function(id, btnElement) {
        // CORREÇÃO:
        const cx = $(document.getElementById('ranking-container-' + id));
        
        const input = cx.find('.edit-title-input');
        const newTitle = input.val();
        const $btn = $(btnElement);

        if(!newTitle.trim()) { alert('O título não pode ser vazio!'); return; }

        const originalText = $btn.text();
        $btn.text('...').prop('disabled', true);

        const fd = new FormData();
        fd.append('ranking_id', id);
        fd.append('ranking_title', newTitle);
        fd.append('save_ranking', '1');
        fd.append('ajax_mode', '1');

        fetch('gerenciar_rankings.php', { method: 'POST', body: fd })
        .then(r => r.json())
        .then(data => {
            if(data.status === 'success') {
                cx.find('.display-title').text(data.novo_titulo).show();
                input.val(data.novo_titulo).hide();
                
                cx.find('.edit-buttons').hide();
                cx.find('.default-buttons').show();

                cx.find('legend').css('color', '#5cb85c');
                setTimeout(() => cx.find('legend').css('color', ''), 1500);
            } else {
                alert('Erro ao salvar.');
            }
        })
        .catch(err => {
            console.error(err);
            alert('Erro de conexão ou JSON inválido.');
        })
        .finally(() => {
            $btn.text(originalText).prop('disabled', false);
        });
    };

    // 4. Excluir Ranking
    window.confirmarExclusao = function(id, title) {
        if(confirm(`Tem certeza que deseja apagar "${title}"?`)) {
            const form = document.createElement('form');
            form.method = 'POST';
            form.innerHTML = `<input type="hidden" name="ranking_id" value="${id}">
                              <input type="hidden" name="delete_ranking" value="1">`;
            document.body.appendChild(form);
            form.submit();
        }
    };
    
    // 5. AJAX de Criação (Fica fora, pois usa evento submit do form)
    $('#form-criar-ranking').on('submit', function(e) {
        e.preventDefault();
        const btn = $(this).find('button');
        btn.text('Criando...').prop('disabled', true);
        
        const fd = new FormData(this);
        fd.append('save_ranking', '1');
        fd.append('ajax_mode', '1');

        fetch('gerenciar_rankings.php', { method: 'POST', body: fd })
        .then(r => r.json())
        .then(data => {
            if(data.status === 'success') window.location.reload();
            else alert('Erro: ' + data.error);
        })
        .catch(e => { console.error(e); alert('Erro JSON.'); })
        .finally(() => btn.text('Criar Ranking').prop('disabled', false));
    });
</script>

<?php require_once 'admin_footer.php'; ?>