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

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

$mensagem = [
    'texto' => "Erro desconhecido ao tentar ocultar o anúncio.",
    'tipo' => "danger"
];

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

// --- 2. Validação de Entrada e CSRF ---
$id_anuncio = filter_input(INPUT_GET, 'id', FILTER_VALIDATE_INT);
$empresa_id_retorno = filter_input(INPUT_GET, 'empresa_id_retorno', FILTER_VALIDATE_INT);

$csrf_token_url = trim($_GET['csrf_token'] ?? '');
$csrf_token_session = trim($_SESSION['csrf_token_delete_gratuito'] ?? ''); 

// Inteligência de Redirecionamento
if ($empresa_id_retorno) {
    // Se a exclusão veio da tela de anúncios da empresa, volta pra lá (Melhor UX)
    $url_retorno = "listar-anuncios-empresa.php?id=" . $empresa_id_retorno;
} else {
    // Caso contrário, volta para listar_empresas.php conforme você pediu anteriormente
    $url_retorno = "listar-anuncios-empresa.php";
}

if (!$id_anuncio) {
    $mensagem['texto'] = "ID do anúncio inválido.";
    goto final_redirecionamento;
}

// Validação do token CSRF robusta
if (empty($csrf_token_url) || empty($csrf_token_session) || !hash_equals($csrf_token_session, $csrf_token_url)) {
    $mensagem['texto'] = "Sua sessão expirou ou houve um erro de segurança (CSRF). Por favor, recarregue a página de listagem e tente novamente.";
    goto final_redirecionamento;
}

// --- 3. Lógica de Ocultar (Soft Delete) ---
try {
    $pdo->beginTransaction();

    $stmt_busca = $pdo->prepare("SELECT id_empresa FROM anuncio_gratuito 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['id_empresa'] != $_SESSION['id']) {
        throw new Exception("Permissão negada para este anúncio.");
    }

    $stmt_hide = $pdo->prepare("UPDATE anuncio_gratuito SET status = 'pausado' WHERE id = ?");
    $stmt_hide->execute([$id_anuncio]);

    $pdo->commit();
    $mensagem = ['texto' => "Anúncio removido da listagem com sucesso!", 'tipo' => "success"];

} catch (Exception $e) {
    if ($pdo->inTransaction()) $pdo->rollBack();
    $mensagem['texto'] = "Erro: " . $e->getMessage();
}

final_redirecionamento:
// Dependendo da página de retorno, definimos a sessão correta para exibir o alerta
if (strpos($url_retorno, 'listar-anuncios-empresa') !== false) {
    $_SESSION['status_mensagem'] = $mensagem;
} else {
    $_SESSION['mensagem_geral'] = $mensagem['texto'];
    $_SESSION['tipo_mensagem_geral'] = $mensagem['tipo'];
}

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