<?php
declare(strict_types=1);

require_once __DIR__ . '/admin_bootstrap.php';

$admin = admin_require_auth();
$adminId = (int)($admin['user_id'] ?? 0);

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

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

try {
    $pdo = admin_get_pdo();
} catch (PDOException $e) {
    http_response_code(500);
    echo json_encode([
        'success' => false,
        'error' => 'Błąd połączenia z bazą danych: ' . $e->getMessage()
    ], JSON_UNESCAPED_UNICODE);
    exit;
}

// Pobieranie danych z POST
$input = json_decode(file_get_contents('php://input'), true);

if (!$input || !isset($input['user_id'])) {
    http_response_code(400);
    echo json_encode([
        'success' => false,
        'error' => 'Nieprawidłowe dane wejściowe'
    ], JSON_UNESCAPED_UNICODE);
    exit;
}

$userId = (int)$input['user_id'];

if ($userId <= 0) {
    http_response_code(400);
    echo json_encode([
        'success' => false,
        'error' => 'Nieprawidłowe ID użytkownika'
    ], JSON_UNESCAPED_UNICODE);
    exit;
}

// Sprawdzenie czy użytkownik istnieje
$stmt = $pdo->prepare("SELECT id, username, role FROM users WHERE id = ? AND (disabled IS NULL OR disabled = 0)");
$stmt->execute([$userId]);
$user = $stmt->fetch(PDO::FETCH_ASSOC);

if (!$user) {
    http_response_code(404);
    echo json_encode([
        'success' => false,
        'error' => 'Użytkownik nie istnieje lub jest już usunięty'
    ], JSON_UNESCAPED_UNICODE);
    exit;
}

if ((int)$user['id'] === $adminId) {
    http_response_code(403);
    echo json_encode([
        'success' => false,
        'error' => 'Nie możesz zarządzać swoim kontem w tym widoku'
    ], JSON_UNESCAPED_UNICODE);
    exit;
}

if (strtolower((string)($user['role'] ?? 'user')) === 'admin') {
    http_response_code(403);
    echo json_encode([
        'success' => false,
        'error' => 'Nie można zarządzać kontami administratorów w tym widoku'
    ], JSON_UNESCAPED_UNICODE);
    exit;
}

try {
    // Zamiast usuwać, oznaczamy jako disabled
    $stmt = $pdo->prepare("UPDATE users SET disabled = 1, account_suspended = 1 WHERE id = ?");
    $stmt->execute([$userId]);
    
    echo json_encode([
        'success' => true,
        'message' => 'Użytkownik został pomyślnie usunięty'
    ], JSON_UNESCAPED_UNICODE);
    
} catch (PDOException $e) {
    http_response_code(500);
    echo json_encode([
        'success' => false,
        'error' => 'Błąd podczas usuwania użytkownika: ' . $e->getMessage()
    ], JSON_UNESCAPED_UNICODE);
}
?>

