<?php
// deletar-anuncio-pago.php

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

// --- 1. Verificação de Acesso ---
$user_role = $_SESSION['role'] ?? '';
if ($user_role !== 'Administradores' && $user_role !== 'Empresas') {
    $_SESSION['status_mensagem'] = ['texto' => "Acesso negado.", 'tipo' => "danger"];
    header("Location: login.php");
    exit();
}

// --- 2. Validação da Entrada ---
$id_anuncio = filter_input(INPUT_GET, 'id', FILTER_VALIDATE_INT);
$csrf_token_recebido = $_GET['csrf_token'] ?? '';
$empresa_id_retorno = filter_input(INPUT_GET, 'empresa_id_retorno', FILTER_VALIDATE_INT);

// Ajuste da URL de retorno
$url_retorno = ($user_role === 'Administradores' && $empresa_id_retorno) 
    ? "listar-anuncios-empresa.php?id=" . $empresa_id_retorno 
    : "listar-anuncios-pago.php";

if (!$id_anuncio) {
    $_SESSION['status_mensagem'] = ['texto' => "ID do anúncio inválido.", 'tipo' => "danger"];
    header("Location: " . $url_retorno);
    exit();
}

// --- 3. Verificação do Token CSRF (CORRIGIDO PARA O NOME CORRETO) ---
$csrf_token_session = $_SESSION['csrf_token_delete'] ?? ''; // Deve ser igual ao do arquivo anterior

if (empty($csrf_token_recebido) || !hash_equals($csrf_token_session, $csrf_token_recebido)) {
    $_SESSION['status_mensagem'] = ['texto' => "Erro de segurança (Token inválido).", 'tipo' => "danger"];
    header("Location: " . $url_retorno);
    exit();
}

// --- 4. Lógica de Exclusão ---
try {
    $pdo->beginTransaction();

    $stmt_busca = $pdo->prepare("SELECT empresa_id FROM anuncio_pago WHERE id = ?");
    $stmt_busca->execute([$id_anuncio]);
    $anuncio = $stmt_busca->fetch(PDO::FETCH_ASSOC);

    if (!$anuncio) {
        throw new Exception("Anúncio não encontrado.");
    }

    if ($user_role === 'Empresas' && $anuncio['empresa_id'] != $_SESSION['id']) {
        throw new Exception("Permissão negada.");
    }
    
    $stmt_delete = $pdo->prepare("DELETE FROM anuncio_pago WHERE id = ?");
    $stmt_delete->execute([$id_anuncio]);

    $pdo->commit();
    $_SESSION['status_mensagem'] = ['texto' => "Anúncio pago excluído com sucesso!", 'tipo' => "success"];

} catch (Exception $e) {
    if ($pdo->inTransaction()) $pdo->rollBack();
    $_SESSION['status_mensagem'] = ['texto' => "Erro ao excluir: " . $e->getMessage(), 'tipo' => "danger"];
}

header("Location: " . $url_retorno);
exit();