<?php
/**
 * kyc-lista.php  (admin)
 * GET → Lista distribuidores con KYC enviado, con previsualización de los 4 documentos
 * GET ?filtro=pendiente  → isVip = 2 (default)
 * GET ?filtro=aprobado   → isVip = 1
 * GET ?filtro=rechazado  → isVip = 3
 * GET ?filtro=todos      → isVip IN (1,2,3)
 */
header('Content-Type: application/json; charset=utf-8');
header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Headers: Authorization, Content-Type');
if ($_SERVER['REQUEST_METHOD'] === 'OPTIONS') { http_response_code(204); exit; }

require_once __DIR__ . '/../../config.php';
$db = getDB();

// ── Validar token admin ───────────────────────────────────────────────────────
$headers    = getallheaders();
$authHeader = $headers['Authorization'] ?? $headers['authorization'] ?? '';
if (!preg_match('/Bearer\s+(.+)/i', $authHeader, $m)) {
    http_response_code(401);
    echo json_encode(['ok' => false, 'error' => 'Token requerido']); exit;
}
$token = trim($m[1]);
$stmtTok = $db->prepare("SELECT idusuarios_sist FROM admin_sessions WHERE token = ? AND expira > NOW()");
$stmtTok->execute([$token]);
if (!$stmtTok->fetch()) {
    http_response_code(401);
    echo json_encode(['ok' => false, 'error' => 'Sesión inválida o expirada']); exit;
}

// ── Filtro ────────────────────────────────────────────────────────────────────
$filtro = $_GET['filtro'] ?? 'pendiente';
$where  = match($filtro) {
    'aprobado'  => 'WHERE i.isVip = 1',
    'rechazado' => 'WHERE i.isVip = 3',
    'todos'     => 'WHERE i.isVip IN (1,2,3)',
    default     => 'WHERE i.isVip = 2',
};

// ── Consulta distribuidores ───────────────────────────────────────────────────
$stmt = $db->query("
    SELECT i.id_inver, i.referencia, i.nombre, i.appat, i.apmat,
           i.rfc, i.email, i.isVip, i.estampa AS fecha_registro
    FROM inversionista i
    {$where}
    ORDER BY i.id_inver DESC
    LIMIT 200
");
$rows = $stmt->fetchAll(PDO::FETCH_ASSOC);

// ── Rutas de archivos ─────────────────────────────────────────────────────────
// Este archivo está en: public_html/app-api/admin/api/kyc-lista.php
// dirname(__DIR__, 2) = public_html/app-api
$baseUploadPath = dirname(__DIR__, 2) . '/uploads/kyc/';
// Usamos un proxy PHP para servir los archivos y evitar problemas de .htaccess
$baseProxyUrl   = 'https://api.sistemarrb.com/kyc/kyc-file.php';

$slotLabels = [
    1 => 'Comprobante de domicilio',
    2 => 'Identificación oficial',
    3 => 'Estado de cuenta bancario',
    4 => 'Fotografía (Selfie con ID)',
];

// ── Armar resultado ───────────────────────────────────────────────────────────
$result = [];
foreach ($rows as $row) {
    $id  = (int)$row['id_inver'];
    $dir = $baseUploadPath . $id . '/';

    // Encontrar archivos por patrón kyc_{id}_sub{N}_{timestamp}.ext
    $docs = [1 => null, 2 => null, 3 => null, 4 => null];
    if (is_dir($dir)) {
        $files = @scandir($dir) ?: [];
        foreach ($files as $f) {
            if ($f === '.' || $f === '..') continue;
            if (preg_match('/^kyc_\d+_sub(\d)_\d+\.\w+$/i', $f, $m)) {
                $st = (int)$m[1];
                if ($st >= 1 && $st <= 4) {
                    $ext      = strtolower(pathinfo($f, PATHINFO_EXTENSION));
                    $docs[$st] = [
                        'nombre'   => $f,
                        'label'    => $slotLabels[$st],
                        'url'      => $baseProxyUrl . '?id=' . $id . '&f=' . rawurlencode($f),
                        'ext'      => $ext,
                        'esPdf'    => $ext === 'pdf',
                        'esImagen' => in_array($ext, ['jpg','jpeg','png','heic','webp']),
                    ];
                }
            }
        }
    }

    $totalDocs    = count(array_filter($docs));
    $tieneArchivos = $totalDocs > 0;

    $result[] = [
        'id_inver'       => $id,
        'referencia'     => $row['referencia']    ?? '',
        'nombre'         => trim(($row['nombre'] ?? '') . ' ' . ($row['appat'] ?? '') . ' ' . ($row['apmat'] ?? '')),
        'rfc'            => $row['rfc']            ?? '',
        'email'          => $row['email']          ?? '',
        'isVip'          => (int)$row['isVip'],
        'fecha_registro' => $row['fecha_registro'] ?? '',
        'tiene_archivos' => $tieneArchivos,
        'total_docs'     => $totalDocs,
        'docs'           => $docs,   // [1 => {...}, 2 => {...}, 3 => null, 4 => {...}]
    ];
}

echo json_encode(['ok' => true, 'kyc' => $result, 'total' => count($result)]);
