<?php
header('Content-Type: application/json');
header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Methods: POST, OPTIONS');
header('Access-Control-Allow-Headers: Content-Type');

if ($_SERVER['REQUEST_METHOD'] === 'OPTIONS') {
    exit(0);
}

require_once __DIR__ . '/../config/database.php';
$pdo = conectarBanco();

if ($_SERVER['REQUEST_METHOD'] !== 'POST') {
    http_response_code(405);
    echo json_encode(['erro' => 'Método não permitido']);
    exit();
}

try {
    // Obter dados do POST
    $input = json_decode(file_get_contents('php://input'), true);
    $id = $input['id'] ?? $_POST['id'] ?? '';
    
    if (empty($id) || !is_numeric($id)) {
        throw new Exception('ID do gestor é obrigatório');
    }
    
    // Verificar se o gestor existe
    $checkSql = "SELECT id, nome, usuario, nivel_acesso FROM gestores WHERE id = ?";
    $checkStmt = $pdo->prepare($checkSql);
    $checkStmt->execute([$id]);
    $gestor = $checkStmt->fetch(PDO::FETCH_ASSOC);
    
    if (!$gestor) {
        throw new Exception('Gestor não encontrado');
    }
    
    // Não permitir excluir o administrador principal (ID 1)
    if ($id == 1) {
        throw new Exception('Não é possível excluir o administrador principal');
    }
    
    // Verificar se é o último administrador
    if ($gestor['nivel_acesso'] === 'admin') {
        $countAdminSql = "SELECT COUNT(*) as total FROM gestores WHERE nivel_acesso = 'admin' AND status = 'ativo'";
        $countStmt = $pdo->prepare($countAdminSql);
        $countStmt->execute();
        $adminCount = $countStmt->fetch(PDO::FETCH_ASSOC)['total'];
        
        if ($adminCount <= 1) {
            throw new Exception('Não é possível excluir o último administrador ativo');
        }
    }
    
    $pdo->beginTransaction();
    
    // Antes de excluir, vamos atualizar registros que referenciam este gestor
    $updateSql = "UPDATE gestores SET criado_por = NULL WHERE criado_por = ?";
    $updateStmt = $pdo->prepare($updateSql);
    $updateStmt->execute([$id]);
    
    // Excluir o gestor
    $deleteSql = "DELETE FROM gestores WHERE id = ?";
    $deleteStmt = $pdo->prepare($deleteSql);
    $deleteStmt->execute([$id]);
    
    if ($deleteStmt->rowCount() === 0) {
        throw new Exception('Nenhum registro foi excluído');
    }
    
    $pdo->commit();
    
    echo json_encode([
        'sucesso' => true,
        'mensagem' => "Gestor '{$gestor['nome']}' foi excluído com sucesso"
    ]);
    
} catch (Exception $e) {
    if ($pdo->inTransaction()) {
        $pdo->rollBack();
    }
    
    http_response_code(400);
    echo json_encode([
        'sucesso' => false,
        'erro' => $e->getMessage()
    ]);
}
?> 
