<?php
require_once dirname(__FILE__) . '/../config.php';

if ($_SERVER['REQUEST_METHOD'] !== 'GET') { jsonErr(405, 'Metodo no permitido.'); }
$jwt   = auth();
$idinv = (int)$jwt['idinv'];
$db    = getDB();

// ── Conteo total de TODA la red usando BFS (breadth-first search) ─────────────
// Se ejecuta en endpoint separado para no bloquear la carga de directos.
$cola      = [$idinv);
$visitados = [$idinv => true);
$limite    = 20000; // seguridad: max 20k nodos
$iter      = 0;
$total     = 0;

while (!empty($cola) && $iter < $limite) {
    $iter++;
    $lote         = array_splice($cola, 0, 100);
    $placeholders = implode(',', array_fill(0, count($lote), '?'));
    $stmtBFS      = $db->prepare(
        'SELECT id_inver FROM inversionista WHERE idprom IN (' . $placeholders . ')'
    );
    $stmtBFS->execute($lote);
    $hijos = $stmtBFS->fetchAll(PDO::FETCH_COLUMN);
    foreach ($hijos as $hid) {
        $hid = (int)$hid;
        if (!isset($visitados[$hid])) {
            $visitados[$hid] = true;
            $cola[]          = $hid;
            $total++;
        }
    }
}

jsonOk(array(
    'total_red_completa' => $total,
));
