<?php
/**
 * Selflix Vagas - gerenciar-templates-email.php
 * Local: /include/gerenciar-templates-email.php
 */

if (session_status() === PHP_SESSION_NONE) { 
    session_start(); 
}

// Segurança e Conexão
require_once '../middleware-auth.php'; 
authAdministrador(); // Garante que apenas ADM acessa
require_once '../conexao.php';
require_once '../env.php';

// Captura o tipo da URL e sanitiza (Fallback seguro para PHP 8+)
$tipo = filter_input(INPUT_GET, 'tipo', FILTER_DEFAULT) ?: 'gratuito';
$tipo = preg_replace('/[^a-zA-Z0-9_-]/', '', $tipo); // Remove caracteres especiais indesejados do tipo

// Definição de Slugs e Tags baseadas no contexto
$config = [
    'pago' => [
        'slugs' => ['pago_empresa', 'notificacao_vaga_novo_candidato', 'pago_admin'],
        'tags'  => ['nome_empresa', 'nome_candidato', 'titulo_vaga', 'link_painel_empresa', 'email_candidato', 'data_vaga', 'cidade', 'site_url']
    ],
    'candidato' => [
        'slugs' => ['confirmacao_candidato', 'confirmacao_candidatura', 'notificacao_admin_novo_candidato'],
        'tags'  => ['nome_candidato', 'titulo_vaga', 'nome_empresa', 'login', 'email', 'celular', 'site_url']
    ],
    'admin' => [
        'slugs' => ['notificacao_login_empresa', 'vencimento_vaga_gratuita'],
        'tags'  => ['nome_empresa', 'email', 'data_hora', 'pagina', 'titulo_vaga', 'data_criacao', 'link_vaga', 'site_url']
    ],
   'gratuito' => [
        'slugs' => ['gratuito_empresa', 'notificacao_vaga_novo_candidato', 'gratuito_admin'],
        'tags'  => ['nome_empresa', 'nome_candidato', 'titulo_vaga', 'link_painel_empresa', 'email_candidato', 'data_vaga', 'cidade', 'site_url', 'link_vaga'] 
    ]
];

// Se o tipo informado não existir nas configurações, assume 'gratuito'
if (!array_key_exists($tipo, $config)) {
    $tipo = 'gratuito';
}

$slugs = $config[$tipo]['slugs'];
$tags  = $config[$tipo]['tags'];

/**
 * Retorna o esqueleto inicial caso o banco esteja vazio
 * Corrigido para utilizar dinamicamente {{site_url}} para apontar para o domínio atual correto
 */
function obterTemplatePadraoSelflix($slug) {
    $templates = [
        'confirmacao_candidato' => "<p>Olá <strong>{{nome_candidato}}</strong>,</p><p>Seu cadastro na Selflix Vagas foi realizado com sucesso! 🎉</p><p>Seu login é: <strong>{{login}}</strong><br>Acesse seu perfil: <a href='{{site_url}}/login.php'>Entrar no Painel</a></p>",
        'confirmacao_candidatura' => "<h2>Candidatura Registrada!</h2><p>Olá <strong>{{nome_candidato}}</strong>,</p><p>Sua candidatura para a vaga <strong>{{titulo_vaga}}</strong> na empresa <strong>{{nome_empresa}}</strong> foi enviada com sucesso.</p>",
        'notificacao_vaga_novo_candidato' => "<h2>Novo Candidato!</h2><p>Olá <strong>{{nome_empresa}}</strong>,</p><p>Você recebeu uma nova candidatura para a vaga <strong>{{titulo_vaga}}</strong>.</p><p>Acesse seu painel: <a href='{{link_painel_empresa}}'>Ver Currículo</a></p>",
        'notificacao_login_empresa' => "<p>A empresa <strong>{{nome_empresa}}</strong> realizou login em {{data_hora}}.</p>",
        'vencimento_vaga_gratuita' => "<p>Olá {{nome_empresa}}, sua vaga <strong>{{titulo_vaga}}</strong> expirou após 30 dias. Acesse o link da vaga para mais detalhes: <a href='{{site_url}}/vaga-gratuita.php?id={{link_vaga}}'>Visualizar Vaga</a></p>"
    ];
    return $templates[$slug] ?? "<p>Vaga: {{titulo_vaga}}<br>Empresa: {{nome_empresa}}</p>";
}

// LÓGICA DE SALVAMENTO
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['btn_salvar_template'])) {
    $slug_up = filter_input(INPUT_POST, 'template_slug', FILTER_DEFAULT);
    $slug_up = preg_replace('/[^a-zA-Z0-9_-]/', '', $slug_up);
    $assunto = filter_input(INPUT_POST, 'assunto', FILTER_SANITIZE_SPECIAL_CHARS);
    $corpo   = $_POST['corpo'] ?? ''; // Não sanitizar HTML aqui pois o CKEditor envia tags propositais

    try {
        $stmt = $pdo->prepare("INSERT INTO EmailTemplates (slug, assunto, corpo) 
                               VALUES (?, ?, ?) 
                               ON DUPLICATE KEY UPDATE assunto = VALUES(assunto), corpo = VALUES(corpo)");
        $stmt->execute([$slug_up, $assunto, $corpo]);
        
        $_SESSION['msg_email'] = "Template atualizado com sucesso!";
        $_SESSION['tipo_msg_email'] = "success";
    } catch (PDOException $e) {
        $_SESSION['msg_email'] = "Erro ao salvar: " . $e->getMessage();
        $_SESSION['tipo_msg_email'] = "danger";
    }
    header("Location: gerenciar-templates-email.php?tipo=$tipo");
    exit();
}

// BUSCA DE DADOS
$templates_carregados = [];
foreach ($slugs as $s) {
    $stmt = $pdo->prepare("SELECT * FROM EmailTemplates WHERE slug = ?");
    $stmt->execute([$s]);
    $res = $stmt->fetch(PDO::FETCH_ASSOC);

    if ($res) {
        $templates_carregados[] = $res;
    } else {
        $templates_carregados[] = [
            'slug' => $s,
            'assunto' => "Informativo: {{titulo_vaga}}",
            'corpo' => obterTemplatePadraoSelflix($s)
        ];
    }
}
?>
<!DOCTYPE html>
<html lang="pt-br">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Configurar E-mails - Selflix</title>
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
    <style>
        body { background-color: #f4f6f9; font-family: 'Segoe UI', sans-serif; }
        .editor-card { background: white; border-radius: 12px; padding: 25px; margin-bottom: 30px; border-top: 5px solid #12929e; box-shadow: 0 4px 6px rgba(0,0,0,0.05); }
        .tag-badge { cursor: pointer; margin: 4px; padding: 8px 15px; background: #f8f9fa; border: 1px solid #ddd; border-radius: 50px; font-size: 0.85rem; transition: 0.3s; }
        .tag-badge:hover { background: #12929e; color: white; border-color: #12929e; }
        .nav-link.active { background-color: #12929e !important; border-color: #12929e !important; }
        .ck-editor__editable { min-height: 250px; }
    </style>
</head>
<body>

<div class="container my-5">
    <div class="d-flex justify-content-between align-items-center mb-5">
        <h2 class="fw-bold text-dark"><i class="fas fa-envelope-open-text text-info me-2"></i> Editor de Templates</h2>
        <a href="../painel-adm.php" class="btn btn-secondary"><i class="fas fa-chevron-left me-2"></i>Voltar</a>
    </div>

    <ul class="nav nav-pills mb-4 shadow-sm p-2 bg-white rounded">
        <?php foreach (['gratuito' => 'Vagas Gratuitas', 'pago' => 'Vagas Select', 'candidato' => 'Candidatos', 'admin' => 'Alertas'] as $k => $v): ?>
            <li class="nav-item">
                <a class="nav-link <?= $tipo === $k ? 'active' : '' ?>" href="?tipo=<?= $k ?>"><?= htmlspecialchars($v) ?></a>
            </li>
        <?php endforeach; ?>
    </ul>

    <?php if (isset($_SESSION['msg_email'])): ?>
        <div class="alert alert-<?= htmlspecialchars($_SESSION['tipo_msg_email']) ?> alert-dismissible fade show">
            <?= htmlspecialchars($_SESSION['msg_email']) ?>
            <button type="button" class="btn-close" data-bs-dismiss="alert"></button>
        </div>
        <?php unset($_SESSION['msg_email'], $_SESSION['tipo_msg_email']); ?>
    <?php endif; ?>

    <div class="alert alert-info border-0 shadow-sm">
        <h6 class="fw-bold"><i class="fas fa-info-circle me-2"></i> Dica: Clique nas tags para copiar e cole no editor.</h6>
        <div class="mt-3">
            <?php foreach ($tags as $t): ?>
                <button type="button" class="tag-badge" onclick="copyTag('{{<?= htmlspecialchars($t) ?>}}')">{{<?= htmlspecialchars($t) ?>}}</button>
            <?php endforeach; ?>
        </div>
    </div>

    <?php foreach ($templates_carregados as $tmpl): ?>
        <div class="editor-card">
            <form method="POST">
                <input type="hidden" name="template_slug" value="<?= htmlspecialchars($tmpl['slug']) ?>">
                <div class="mb-3">
                    <label class="form-label fw-bold text-uppercase text-muted" style="font-size: 0.7rem;">Assunto (Slug: <?= htmlspecialchars($tmpl['slug']) ?>)</label>
                    <input type="text" name="assunto" class="form-control form-control-lg" value="<?= htmlspecialchars($tmpl['assunto']) ?>" required>
                </div>
                <div class="mb-3">
                    <label class="form-label fw-bold">Corpo do E-mail:</label>
                    <textarea name="corpo" class="visual-editor"><?= $tmpl['corpo'] ?></textarea>
                </div>
                <div class="text-end">
                    <button type="submit" name="btn_salvar_template" class="btn btn-success px-5 fw-bold">
                        <i class="fas fa-save me-2"></i>SALVAR TEMPLATE
                    </button>
                </div>
            </form>
        </div>
    <?php endforeach; ?>
</div>

<script src="https://cdn.ckeditor.com/ckeditor5/39.0.1/classic/ckeditor.js"></script>
<script>
    // Inicializa todos os editores na página
    document.querySelectorAll('.visual-editor').forEach(el => {
        ClassicEditor.create(el, {
            toolbar: ['heading', '|', 'bold', 'italic', 'link', 'bulletedList', 'numberedList', 'blockQuote', 'undo', 'redo']
        }).catch(error => console.error(error));
    });

    // Função de Cópia moderna e compatível com HTTPS/HTTP localhost
    function copyTag(text) {
        if (navigator.clipboard && window.isSecureContext) {
            navigator.clipboard.writeText(text).then(() => {
                alert('Tag ' + text + ' copiada!');
            }).catch(err => {
                fallbackCopyText(text);
            });
        } else {
            fallbackCopyText(text);
        }
    }

    function fallbackCopyText(text) {
        const textArea = document.createElement("textarea");
        textArea.value = text;
        textArea.style.top = "0";
        textArea.style.left = "0";
        textArea.style.position = "fixed";
        document.body.appendChild(textArea);
        textArea.focus();
        textArea.select();
        try {
            document.execCommand('copy');
            alert('Tag ' + text + ' copiada!');
        } catch (err) {
            console.error('Erro ao copiar tag', err);
        }
        document.body.removeChild(textArea);
    }
    
    function obterTemplatePadraoSelflix($slug) {
    $templates = [
        'confirmacao_candidato' => "<p>Olá <strong>{{nome_candidato}}</strong>,</p><p>Seu cadastro na Selflix Vagas foi realizado com sucesso! 🎉</p><p>Seu login é: <strong>{{login}}</strong><br>Acesse seu perfil: <a href='{{site_url}}/login.php'>Entrar no Painel</a></p>",
        'confirmacao_candidatura' => "<h2>Candidatura Registrada!</h2><p>Olá <strong>{{nome_candidato}}</strong>,</p><p>Sua candidatura para a vaga <strong>{{titulo_vaga}}</strong> na empresa <strong>{{nome_empresa}}</strong> foi enviada com sucesso.</p>",
        'notificacao_vaga_novo_candidato' => "<h2>Novo Candidato!</h2><p>Olá <strong>{{nome_empresa}}</strong>,</p><p>Você recebeu uma nova candidatura para a vaga <strong>{{titulo_vaga}}</strong>.</p><p>Acesse seu painel: <a href='{{link_painel_empresa}}'>Ver Currículo</a></p>",
        'notificacao_login_empresa' => "<p>A empresa <strong>{{nome_empresa}}</strong> realizou login em {{data_hora}}.</p>",
        'vencimento_vaga_gratuita' => "<p>Olá {{nome_empresa}}, sua vaga <strong>{{titulo_vaga}}</strong> expirou após 30 dias. Acesse o link da vaga para mais detalhes: <a href='{{site_url}}/vaga-gratuita.php?id={{link_vaga}}'>Visualizar Vaga</a></p>",
        
        // ADICIONADOS ESTES DOIS TEMPLATES ABAIXO:
       'gratuito_empresa' => "<h2>Sua vaga foi publicada!</h2><p>Olá {{nome_empresa}}, sua vaga de <strong>{{titulo_vaga}}</strong> já está ativa.</p><p>Acesse o link da vaga: <a href='{{link_vaga}}'>Visualizar Vaga Cadastrada</a></p>",
        'gratuito_admin' => "<h2>Nova Vaga Gratuita Criada</h2><p>A empresa {{nome_empresa}} acabou de cadastrar a vaga: <strong>{{titulo_vaga}}</strong>.</p><p>Link: <a href='{{link_vaga}}'>Visualizar Vaga</a></p>"
    ];
    return $templates[$slug] ?? "<p>Vaga: {{titulo_vaga}}<br>Empresa: {{nome_empresa}}</p>";
}
</script>
</body>
</html>