<?php
declare(strict_types=1);
// kyc/upload.php — Sube un documento KYC del distribuidor
// subTipo: 1=domicilio, 2=identificacion, 3=banco, 4=fotografia
header('Content-Type: application/json; charset=utf-8');
header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Headers: Authorization, Content-Type');
header('Access-Control-Allow-Methods: POST, OPTIONS');
if ($_SERVER['REQUEST_METHOD'] === 'OPTIONS') { http_response_code(200); exit; }

require_once __DIR__ . '/../config.php';

$jwt      = auth();
$id_inver = (int)$jwt['idinv'];

if ($_SERVER['REQUEST_METHOD'] !== 'POST') {
    jsonErr(405, 'Método no permitido.');
}

// Validar subTipo
$subTipo = (int)($_POST['subTipo'] ?? 0);
if ($subTipo < 1 || $subTipo > 4) {
    jsonErr(400, 'subTipo inválido. Valores: 1=domicilio, 2=identificacion, 3=banco, 4=fotografia');
}

// Validar archivo
if (!isset($_FILES['archivo']) || $_FILES['archivo']['error'] !== UPLOAD_ERR_OK) {
    $errCode = $_FILES['archivo']['error'] ?? -1;
    jsonErr(400, 'No se recibió el archivo. Código de error: ' . $errCode);
}

$file     = $_FILES['archivo'];
$origName = basename($file['name']);
$ext      = strtolower(pathinfo($origName, PATHINFO_EXTENSION));
$allowed  = ['jpg', 'jpeg', 'png', 'pdf', 'heic'];
if (!in_array($ext, $allowed)) {
    jsonErr(400, 'Tipo de archivo no permitido. Use: jpg, jpeg, png, pdf, heic');
}

if ($file['size'] > 5 * 1024 * 1024) {
    jsonErr(400, 'El archivo supera el tamaño máximo de 5MB.');
}

// ── Directorio correcto: app-api/uploads/kyc/{id_inver}/ ─────────────────────
// __DIR__ = public_html/app-api/kyc
// dirname(__DIR__) = public_html/app-api
$uploadDir = dirname(__DIR__) . '/uploads/kyc/' . $id_inver . '/';
if (!is_dir($uploadDir)) {
    mkdir($uploadDir, 0755, true);
}

// Eliminar archivo anterior del mismo subTipo si existe
$existingPattern = $uploadDir . 'kyc_' . $id_inver . '_sub' . $subTipo . '_*';
foreach (glob($existingPattern) as $oldFile) {
    @unlink($oldFile);
}

$newName  = 'kyc_' . $id_inver . '_sub' . $subTipo . '_' . time() . '.' . $ext;
$destPath = $uploadDir . $newName;

if (!move_uploaded_file($file['tmp_name'], $destPath)) {
    jsonErr(500, 'Error al guardar el archivo en el servidor.');
}

$fileUrl = 'https://api.sistemarrb.com/app-api/uploads/kyc/' . $id_inver . '/' . $newName;

// ── Actualizar isVip a "en revisión" si aún no está verificado ────────────────
$db = getDB();
try {
    $stmt = $db->prepare(
        "UPDATE inversionista SET isVip = 2 WHERE id_inver = ? AND (isVip = 0 OR isVip IS NULL)"
    );
    $stmt->execute([$id_inver]);
} catch (Throwable $e) {
    // No bloquear si falla el UPDATE, el archivo ya quedó guardado
}

jsonOk([
    'file_url' => $fileUrl,
    'subTipo'  => $subTipo,
    'message'  => 'Documento subido correctamente.',
]);
