<?php

require_once '../../core/config.php';
require_once '../../core/session.php';
require_once '../../core/database.php';
require_once '../../core/permissions.php';
require_once '../../services/analytics/DashboardUserAccessAdminService.php';

require_login();
require_permission('admin.users.edit');

if (strtoupper((string)($_SERVER['REQUEST_METHOD'] ?? 'GET')) !== 'POST') {
    http_response_code(405);
    exit('Método no permitido.');
}
csrf_require_valid_request();

$pdo = db();
$id = isset($_POST['id']) ? (int)$_POST['id'] : 0;
$currentUser = current_user();

if ($id <= 0) exit('ID de usuario inválido.');
if ($id === (int)$currentUser['id']) exit('Operación denegada: no puedes eliminar tu propia cuenta.');

try {
    $pdo->beginTransaction();
    (new DashboardUserAccessAdminService($pdo))->deleteAccessForUser($id);
    $stmt = $pdo->prepare('DELETE FROM users WHERE id=?');
    $stmt->execute(array($id));
    $pdo->commit();
    $_SESSION['admin_users_notice'] = array('type' => 'success', 'message' => 'Usuario eliminado correctamente.');
} catch (Throwable $e) {
    if ($pdo->inTransaction()) $pdo->rollBack();
    error_log('admin user delete error: ' . $e->getMessage());
    exit('Este usuario tiene registros asociados y no puede eliminarse. Cámbialo a estado Inactivo.');
}

header('Location: /modules/admin/users.php');
exit;
