<?php
// processar-anuncio-pago.php - VERSÃO CORRIGIDA

ini_set('display_errors', 1);
error_reporting(E_ALL);

if (session_status() == PHP_SESSION_NONE) {
    session_start();
}
require_once 'conexao.php';
require_once 'env.php';

if (!isset($_SESSION['id'])) {
    header("Location: login.php");
    exit();
}

if ($_SERVER['REQUEST_METHOD'] !== 'POST') {
    header("Location: criar-anuncio-pago.php");
    exit();
}

if (!isset($_POST['csrf_token']) || !hash_equals($_SESSION['csrf_token'] ?? '', $_POST['csrf_token'])) {
    $_SESSION['mensagem'] = "Erro de segurança.";
    $_SESSION['tipo_mensagem'] = "error";
    header("Location: criar-anuncio-pago.php");
    exit();
}

function gerarSlugParaAnuncio($titulo) {
    $slug = mb_strtolower($titulo, 'UTF-8');
    // Remove acentos de forma robusta
    $slug = preg_replace('/[^a-z0-9]/', '-', iconv('UTF-8', 'ASCII//TRANSLIT', $slug));
    return trim(preg_replace('/-+/', '-', $slug), '-') ?: 'vaga';
}

$form_data = $_POST;
$erros_campos = [];

// Define o ID da empresa (se for admin, pega do POST, se for empresa, pega da SESSION)
$empresa_id = (($_SESSION['role'] ?? '') === 'Administrador') ? ($_POST['empresa_alvo_id'] ?? null) : $_SESSION['id'];

if (empty($empresa_id)) {
    $erros_campos['geral'] = "ID da empresa não identificado.";
}

// Coleta e Sanitização
$titulo_vaga = trim($form_data['titulo_vaga'] ?? '');
$email_para_curriculo = trim($form_data['email_para_curriculo'] ?? '');
$descricao_vaga = trim($form_data['descricao_vaga'] ?? '');
$cidade_vaga = trim($form_data['cidade_vaga'] ?? '');
$estado = trim($form_data['estado'] ?? '');
$segmento_vaga = trim($form_data['segmento_vaga'] ?? 'Outro');
$tipo_vaga = trim($form_data['tipo_vaga'] ?? 'CLT');
$modelo_contratacao = trim($form_data['modelo_contratacao'] ?? '');
$pcd_vaga = trim($form_data['PCD'] ?? 'Não');

// --- LÓGICA DE SALÁRIO CORRIGIDA ---
$salario_option = $form_data['salario_option'] ?? 'a_combinar';
$salario_input = $form_data['salario'] ?? '';
$salario_numerico = 0.00;
$salario_a_combinar = ($salario_option === 'a_combinar') ? 1 : 0;

if ($salario_a_combinar === 0) {
    if (empty($salario_input)) {
        $erros_campos['salario'] = "Por favor, informe o valor do salário.";
    } else {
        // CORREÇÃO: Remove R$, pontos de milhar e converte vírgula decimal em ponto
        $salario_limpo = str_replace(['R$', ' ', '.'], '', $salario_input);
        $salario_limpo = str_replace(',', '.', $salario_limpo);
        $salario_numerico = is_numeric($salario_limpo) ? (float)$salario_limpo : 0.00;
    }
}

// Validações básicas
if (empty($titulo_vaga)) $erros_campos['titulo_vaga'] = "Título é obrigatório.";
if (empty($email_para_curriculo)) $erros_campos['email_para_curriculo'] = "E-mail é obrigatório.";
if (empty($descricao_vaga)) $erros_campos['descricao_vaga'] = "Descrição é obrigatória.";

if (!empty($erros_campos)) {
    $_SESSION['mensagem_erro_campos'] = $erros_campos;
    $_SESSION['form_data_POST'] = $form_data;
    $_SESSION['mensagem'] = "Preencha todos os campos obrigatórios.";
    $_SESSION['tipo_mensagem'] = "error";
    header("Location: criar-anuncio-pago.php");
    exit();
}

try {
    $pdo->beginTransaction();

    // A ordem dos parâmetros deve bater exatamente com o execute()
    $sql = "INSERT INTO anuncio_pago (
        titulo_vaga, email_para_curriculo, descricao_vaga, 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_para_curriculo, 
        $descricao_vaga, 
        $segmento_vaga, 
        $estado,
        $tipo_vaga, 
        $modelo_contratacao, 
        $pcd_vaga, 
        $salario_numerico, 
        $salario_a_combinar,
        $empresa_id, 
        $cidade_vaga
    ]);

    $id_novo = $pdo->lastInsertId();
    
    // Gera Slug Único
    $slug = gerarSlugParaAnuncio($titulo_vaga) . '-' . $id_novo;
    $pdo->prepare("UPDATE anuncio_pago SET slug = ? WHERE id = ?")->execute([$slug, $id_novo]);

    $pdo->commit();
    
    unset($_SESSION['form_data_POST']);
    $_SESSION['mensagem'] = "Anúncio publicado com sucesso!";
    $_SESSION['tipo_mensagem'] = "success";
    header("Location: painel-de-gestao-empresa.php");
    exit();

} catch (Exception $e) {
    if ($pdo->inTransaction()) $pdo->rollBack();
    error_log("Erro ao criar anúncio pago: " . $e->getMessage());
    $_SESSION['mensagem'] = "Erro interno ao salvar o anúncio.";
    $_SESSION['tipo_mensagem'] = "error";
    $_SESSION['form_data_POST'] = $form_data;
    header("Location: criar-anuncio-pago.php");
    exit();
}