<?php
// api/migrar_acao.php
session_start();
header('Content-Type: application/json; charset=UTF-8');

error_reporting(0);
ini_set('display_errors', 0);

require_once '../config.php';

try {
    $pdo = getConexaoAtiva();

    if (!isset($_SESSION['user_id'])) {
        echo json_encode(['success' => false, 'message' => 'Sua sessão expirou. Faça login novamente.']);
        exit;
    }

    $user_id = $_SESSION['user_id'];
    $role = $_SESSION['user_role'] ?? 'reseller';

    $json_input = file_get_contents('php://input');
    $data = json_decode($json_input, true);

    if (!$data) {
        throw new Exception("Nenhum dado recebido do formulário.");
    }

    $modo = $data['modo'] ?? 'individual';
    $api_url = $data['api_url'] ?? '';
    $urls_massa = $data['urls_massa'] ?? '';

    $urls_to_process = [];
    
    if ($modo === 'individual') {
        if (empty(trim($api_url))) throw new Exception("A URL do cliente não pode estar vazia.");
        $urls_to_process[] = trim($api_url);
    } else {
        if (empty(trim($urls_massa))) throw new Exception("A lista de URLs não pode estar vazia.");
        $linhas = explode("\n", $urls_massa);
        foreach ($linhas as $linha) {
            $linha = trim($linha);
            if (!empty($linha)) {
                $urls_to_process[] = $linha;
            }
        }
    }

    if (empty($urls_to_process)) {
        throw new Exception("Nenhuma URL válida encontrada para processar.");
    }

    // =========================================================================
    // LÓGICA DE COBRANÇA DE CRÉDITOS (CORRIGIDA)
    // =========================================================================
    try {
        $stmt_conf = $pdo->query("SELECT migracao_cobrar_credito FROM painel_config LIMIT 1");
        $conf = $stmt_conf->fetchColumn();
        $cobrar = ($conf !== false && $conf !== null) ? (int)$conf : 1; 
    } catch(Exception $e) {
        $cobrar = 1;
    }

    $sou_admin_master = ($_SESSION['nivel_admin'] == 1 || $user_id == 11 || $role === 'admin');
    $vai_cobrar = ($cobrar == 1 && !$sou_admin_master);

    if ($vai_cobrar) {
        $creditos_atuais = (float) $pdo->query("SELECT credits FROM reg_users WHERE id = $user_id")->fetchColumn();
        $quantidade_tentada = count($urls_to_process);
        
        if ($creditos_atuais < $quantidade_tentada) {
            throw new Exception("Saldo insuficiente! Você tem {$creditos_atuais} créditos e está tentando importar {$quantidade_tentada} clientes.");
        }
    }

    // =========================================================================
    // INICIA A MIGRAÇÃO
    // =========================================================================
    $sucessos = 0;
    $falhas = 0;
    $duplicados = 0;

    foreach ($urls_to_process as $url) {
        $parsed_url = parse_url($url);
        
        if (!isset($parsed_url['query'])) {
            $falhas++;
            continue; 
        }
        
        parse_str($parsed_url['query'], $params);
        $username = $params['username'] ?? '';
        $password = $params['password'] ?? '';

        if (empty($username) || empty($password)) {
            $falhas++;
            continue;
        }

        $stmt_check = $pdo->prepare("SELECT id FROM users WHERE username = ?");
        $stmt_check->execute([$username]);
        if ($stmt_check->fetch()) {
            $duplicados++;
            continue; 
        }

        $exp_date = time() + (30 * 86400); 

        $sql_insert = "INSERT INTO users (username, password, exp_date, enabled, admin_enabled, member_id) VALUES (?, ?, ?, 1, 1, ?)";
        $stmt_in = $pdo->prepare($sql_insert);
        $inseriu = $stmt_in->execute([$username, $password, $exp_date, $user_id]);

        if ($inseriu) {
            if ($vai_cobrar) {
                $pdo->prepare("UPDATE reg_users SET credits = credits - 1 WHERE id = ?")->execute([$user_id]);
            }
            $sucessos++;
        } else {
            $falhas++;
        }
    }

    $msg_final = "Migração concluída!<br><br>";
    $msg_final .= "<b style='color:var(--success)'>✅ Importados com Sucesso: {$sucessos}</b><br>";
    
    if ($duplicados > 0) {
        $msg_final .= "<b style='color:var(--warning)'>⚠️ Já existiam no painel: {$duplicados}</b><br>";
    }
    if ($falhas > 0) {
        $msg_final .= "<b style='color:var(--danger)'>❌ Falharam (URL inválida): {$falhas}</b>";
    }

    if ($sucessos === 0) {
        echo json_encode(['success' => false, 'message' => $msg_final]);
    } else {
        echo json_encode(['success' => true, 'message' => $msg_final]);
    }

} catch (Exception $e) {
    echo json_encode(['success' => false, 'message' => $e->getMessage()]);
}
?>
