<?php
// toggle-anuncio-status.php
session_start();
require_once 'conexao.php';

header('Content-Type: application/json');

$response = ['success' => false, 'message' => ''];

// Verificar se a requisição é do tipo POST e se os dados foram fornecidos
if ($_SERVER['REQUEST_METHOD'] !== 'POST' || !isset($_POST['id_anuncio']) || !isset($_POST['novo_status']) || !isset($_POST['csrf_token'])) {
    $response['message'] = 'Requisição inválida ou dados incompletos.';
    echo json_encode($response);
    exit();
}

$anuncio_id = filter_var($_POST['id_anuncio'], FILTER_VALIDATE_INT);
$novo_status = $_POST['novo_status'] === 'ativo' ? 'ativo' : 'inativo';
$csrf_token = $_POST['csrf_token'];

// Validar o token CSRF para segurança
if (!isset($_SESSION['csrf_token_toggle_status']) || $csrf_token !== $_SESSION['csrf_token_toggle_status']) {
    $response['message'] = 'Token CSRF inválido.';
    echo json_encode($response);
    exit();
}

// Verificar autenticação e permissões do usuário
if (!isset($_SESSION['id'], $_SESSION['role'])) {
    $response['message'] = 'Acesso negado. Usuário não autenticado.';
    echo json_encode($response);
    exit();
}

$user_id = $_SESSION['id'];
$user_role = $_SESSION['role'];

try {
    // Apenas Administradores e Empresas podem alterar o status
    if ($user_role === 'Administrador' || $user_role === 'Administradores') {
        $sql = "UPDATE anuncio_pago SET status = :novo_status WHERE id = :id";
        $stmt = $pdo->prepare($sql);
        $stmt->bindParam(':novo_status', $novo_status);
        $stmt->bindParam(':id', $anuncio_id, PDO::PARAM_INT);
    } elseif ($user_role === 'Empresas') {
        // Empresas só podem alterar seus próprios anúncios
        $sql = "UPDATE anuncio_pago SET status = :novo_status WHERE id = :id AND empresa_id = :empresa_id";
        $stmt = $pdo->prepare($sql);
        $stmt->bindParam(':novo_status', $novo_status);
        $stmt->bindParam(':id', $anuncio_id, PDO::PARAM_INT);
        $stmt->bindParam(':empresa_id', $user_id, PDO::PARAM_INT);
    } else {
        $response['message'] = 'Você não tem permissão para realizar esta ação.';
        echo json_encode($response);
        exit();
    }
    
    $stmt->execute();

    if ($stmt->rowCount() > 0) {
        $response['success'] = true;
        $response['novo_status'] = $novo_status;
        $response['message'] = 'Status atualizado com sucesso.';
    } else {
        $response['message'] = 'Anúncio não encontrado ou status já atualizado.';
    }
} catch (PDOException $e) {
    error_log("Erro PDO ao alternar status do anúncio: " . $e->getMessage());
    $response['message'] = 'Ocorreu um erro no servidor.';
}

echo json_encode($response);
?>