<?php
session_start();
error_reporting(0);
ini_set('display_errors', 0);
header('Content-Type: application/json');

require_once 'config.php';
$pdo = getConexaoAtiva();
$pdo_int = getConexaoInterna();

// FORÇA O BANCO A FALAR EM UTF8
$pdo->exec("SET NAMES utf8mb4");

if (!isset($_SESSION['user_id'])) {
    echo json_encode(['sucesso' => false, 'erro' => 'Sessão expirada.']);
    exit;
}

$id_cliente = isset($_POST['id_cliente']) ? intval($_POST['id_cliente']) : 0;
$id_logado = $_SESSION['user_id'];
$is_admin = (isset($_SESSION['user_role']) && $_SESSION['user_role'] === 'admin');

if ($id_cliente <= 0) {
    echo json_encode(['sucesso' => false, 'erro' => 'ID inválido.']);
    exit;
}

// ====================================================================
// INTELIGÊNCIA ARTIFICIAL: DETECTA SE É XUI ONE OU XTREAM UI
// ====================================================================
$modo_ativo = 'interno';
try {
    $modo_ativo = $pdo_int->query("SELECT modo_ativo FROM configuracoes LIMIT 1")->fetchColumn() ?: 'interno';
} catch (Exception $e) {}

$tabela_clientes = ($modo_ativo === 'xui') ? '`lines`' : '`users`';

try {
    // Verifica se o cliente existe e se pertence a você (Usando a tabela correta!)
    if ($is_admin) {
        $stmtCheck = $pdo->prepare("SELECT id FROM $tabela_clientes WHERE id = ?");
        $stmtCheck->execute([$id_cliente]);
    } else {
        $stmtCheck = $pdo->prepare("SELECT id FROM $tabela_clientes WHERE id = ? AND member_id = ?");
        $stmtCheck->execute([$id_cliente, $id_logado]);
    }

    if ($stmtCheck->rowCount() == 0) {
        echo json_encode(['sucesso' => false, 'erro' => 'Cliente não encontrado no banco de dados.']);
        exit;
    }

    // ====================================================================
    // ROTINAS DE LIMPEZA E SINCRONIZAÇÃO (À Prova de Falhas)
    // ====================================================================

    // 1. Derruba a conexão "fantasma" que ficou presa online (Xtream UI)
    try {
        $pdo->prepare("DELETE FROM user_activity_now WHERE user_id = ?")->execute([$id_cliente]);
    } catch (Exception $e) {}

    // 2. Limpa IPs travados que o servidor bloqueou (Xtream UI)
    try {
        $pdo->prepare("DELETE FROM ips_in_use WHERE user = ?")->execute([$id_cliente]);
    } catch (Exception $e) {}

    // 3. Limpa aparelhos travados pelo MAC Address (Xtream UI / Ministra)
    try {
        $pdo->prepare("DELETE FROM mag_devices WHERE user_id = ?")->execute([$id_cliente]);
    } catch (Exception $e) {}

    // 4. Limpeza Específica para XUI One (Se as tabelas existirem)
    if ($modo_ativo === 'xui') {
        try {
            $pdo->prepare("DELETE FROM `client_logs` WHERE line_id = ?")->execute([$id_cliente]);
        } catch (Exception $e) {}
    }

    echo json_encode(['sucesso' => true, 'msg' => 'Cliente sincronizado e resetado com sucesso!']);

} catch (Exception $e) {
    echo json_encode(['sucesso' => false, 'erro' => 'Erro interno de sincronização.']);
}
?>