<?php
/**
 * processar-anuncio-pago.php
 * Versão: Gravação de Vaga Premium + Notificação Dinâmica via Banco de Dados
 */

ob_start();

// 1. Configurações de Erros para Debug
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);

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

require_once 'conexao.php';
require_once 'env.php';

// Define a URL base manual para evitar erros em subpastas
$site_url = 'https://appselflix.gexcore.com.br';

// Carrega o utilitário de e-mail exclusivo para anúncios pagos (Motor Dinâmico)
$utils_path = __DIR__ . '/include/emails-anuncios/pago.php';
if (file_exists($utils_path)) {
    require_once $utils_path;
}

// 2. Verificação de Autenticação
if (!isset($_SESSION['id'])) {
    header("Location: login.php");
    exit();
}

// 3. Verificação de CSRF (Segurança)
if (!isset($_POST['csrf_token']) || !hash_equals($_SESSION['csrf_token'] ?? '', $_POST['csrf_token'])) {
    $_SESSION['mensagem'] = "Erro de segurança. A sua sessão pode ter expirado.";
    $_SESSION['tipo_mensagem'] = "error";
    header("Location: criar-anuncio-pago.php");
    exit();
}

/**
 * Função para gerar Slug (URL amigável)
 */
if (!function_exists('gerarSlugParaVaga')) {
    function gerarSlugParaVaga($titulo) {
        $slug = mb_strtolower($titulo, 'UTF-8');
        $slug = preg_replace('/[^a-z0-9]/', '-', iconv('UTF-8', 'ASCII//TRANSLIT', $slug));
        $slug = preg_replace('/-+/', '-', $slug);
        return trim($slug, '-') ?: 'vaga';
    }
}

// 4. Captura e Tratamento de Dados
$empresa_id    = (($_SESSION['role'] ?? '') === 'Administrador') ? ($_POST['empresa_alvo_id'] ?? null) : $_SESSION['id'];
$titulo_vaga   = trim($_POST['titulo_vaga'] ?? '');
$email_cv      = filter_var(trim($_POST['email_para_curriculo'] ?? ''), FILTER_SANITIZE_EMAIL);
$whatsapp      = trim($_POST['whatsapp_contato'] ?? '');
$descricao     = trim($_POST['descricao_vaga'] ?? '');
$requisitos    = trim($_POST['requisitos_contratacao'] ?? '');
$cidade        = trim($_POST['cidade_vaga'] ?? 'N/D');
$estado        = trim($_POST['estado'] ?? 'N/D');
$segmento      = trim($_POST['segmento_vaga'] ?? 'Outro');
$tipo_contrato = trim($_POST['tipo_vaga'] ?? 'CLT');
$modelo        = trim($_POST['modelo_contratacao'] ?? '');
$pcd           = trim($_POST['PCD'] ?? 'Não');

// --- Lógica de Salário (Magnitude Corrigida para evitar R$ 120.000) ---
$salario_input  = $_POST['salario'] ?? '';
$salario_option = $_POST['salario_option'] ?? 'a_combinar';
$salario_db     = 0.00;
$a_combinar     = ($salario_option === 'a_combinar') ? 1 : 0;

if ($a_combinar === 0) {
    $val = str_replace(['R$', ' '], '', $salario_input);
    if (strpos($val, ',') !== false) {
        $val = str_replace('.', '', $val);
        $val = str_replace(',', '.', $val);
    }
    $salario_db = (float)$val;
}

// 5. Processamento no Banco de Dados
try {
    $pdo->beginTransaction();

    $sql = "INSERT INTO anuncio_pago (
                titulo_vaga, email_para_curriculo, celular_vaga, descricao_vaga, 
                requisitos_contratacao, segmento_vaga, estado, tipo_vaga, 
                modelo_contratacao, PCD, salario, salario_a_combinar, 
                empresa_id, data_criacao, cidade_vaga, status
            ) VALUES (
                ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, NOW(), ?, 'ativo'
            )";

    $stmt = $pdo->prepare($sql);
    $stmt->execute([
        $titulo_vaga, $email_cv, $whatsapp, $descricao, 
        $requisitos, $segmento, $estado, $tipo_contrato, 
        $modelo, $pcd, $salario_db, $a_combinar, 
        $empresa_id, $cidade
    ]);

    $id_novo = $pdo->lastInsertId();
    $slug = gerarSlugParaVaga($titulo_vaga) . '-' . $id_novo;
    $pdo->prepare("UPDATE anuncio_pago SET slug = ? WHERE id = ?")->execute([$slug, $id_novo]);

    // CONFIRMA A GRAVAÇÃO ANTES DE ENVIAR OS E-MAILS
    $pdo->commit();

    // 6. GATILHO DE E-MAILS DINÂMICOS (Pós-Commit)
    $stmt_emp = $pdo->prepare("SELECT nome_empresa, email FROM Empresas WHERE id = ?");
    $stmt_emp->execute([$empresa_id]);
    $empresa = $stmt_emp->fetch(PDO::FETCH_ASSOC);

    if ($empresa) {
        // Define o link correto para anúncios pagos: vaga-select.php
        $link_vaga = $site_url . "/vaga-select.php?id=" . $slug;
        
        // Organiza as tags que o Marketing usará no Painel {{tag}}
        $dadosParaEmail = [
            'criado_por'    => ($_SESSION['role'] === 'Administrador' ? 'Administrador' : $empresa['nome_empresa']),
            'titulo_vaga'   => $titulo_vaga,
            'link_vaga'     => $link_vaga,
            'data_vaga'     => date('d/m/Y'),
            'nome_empresa'  => $empresa['nome_empresa'],
            'nome_contato'  => $empresa['nome_empresa'], // Ou campo específico de contato se houver
            'setor'         => $segmento,
            'email_contato' => $email_cv,
            'telefone'      => $whatsapp,
            'cidade'        => $cidade,
            'uf'            => $estado
        ];

        // Dispara o e-mail dinâmico para a Empresa (Slug: pago_empresa)
        if (function_exists('enviarEmailVagaPagoDinamico')) {
            enviarEmailVagaPagoDinamico($pdo, $empresa['email'], 'pago_empresa', $dadosParaEmail);
        }

        // Dispara o e-mail dinâmico para o Admin (Slug: pago_admin)
        if (function_exists('enviarEmailVagaPagoDinamico')) {
            $email_admin = $_ENV['SMTP_FROM_EMAIL'] ?? 'vagas@selflix.com.br';
            enviarEmailVagaPagoDinamico($pdo, $email_admin, 'pago_admin', $dadosParaEmail);
        }
    }
    
    $_SESSION['mensagem'] = "Vaga Premium publicada com sucesso!";
    $_SESSION['tipo_mensagem'] = "success";
    header("Location: listar-anuncios-pago.php");
    exit();

} catch (Exception $e) {
    if ($pdo->inTransaction()) $pdo->rollBack();
    error_log("Erro no Processamento Pago: " . $e->getMessage());
    $_SESSION['mensagem'] = "Erro ao processar a vaga: " . $e->getMessage();
    $_SESSION['tipo_mensagem'] = "error";
    header("Location: criar-anuncio-pago.php");
    exit();
}