<?php
/**
 * admin/api/orders-pending.php
 * Lista órdenes pendientes (tipo 7 y 8) y detalle de una orden específica.
 * También devuelve lista de bancos cuando se pasa ?bancos=1
 */

header('Content-Type: application/json; charset=utf-8');
header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Methods: GET, OPTIONS');
header('Access-Control-Allow-Headers: Content-Type, Authorization');

if ($_SERVER['REQUEST_METHOD'] === 'OPTIONS') {
    http_response_code(200);
    exit;
}

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

try {
    $pdo = new PDO(
        "mysql:host=" . DB_HOST . ";dbname=" . DB_NAME . ";charset=utf8",
        DB_USER,
        DB_PASS,
        [PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC]
    );
} catch (PDOException $e) {
    echo json_encode(['error' => 'DB connection failed: ' . $e->getMessage()]);
    exit;
}

// ─── Endpoint: lista de bancos ────────────────────────────────────────────────
if (isset($_GET['bancos'])) {
    $stmt = $pdo->query("SELECT id, banco, cuenta, numero FROM bancos ORDER BY banco");
    echo json_encode(['bancos' => $stmt->fetchAll()]);
    exit;
}

// ─── Endpoint: detalle de una orden ──────────────────────────────────────────
if (isset($_GET['id'])) {
    $id = (int) $_GET['id'];

    // Datos generales de la transacción
    $stmt = $pdo->prepare("
        SELECT
            t.idtransacciones,
            t.tipostr_idtipostr AS tipo,
            t.statusentrega,
            t.fecha,
            i.nombre, i.appat, i.apmat, i.rfc, i.email, i.tel1, i.tel2, i.wa,
            d.cantidad,
            d.puntos,
            d.no_ficha,
            ta.cdentrega,
            ta.costoEnvio AS costo_envio,
            ta.confirmaDeposito AS metodo_pago,
            ta.id_direccionenvio,
            de.calle AS dir_calle,
            de.noExt AS dir_noext,
            de.noInt AS dir_noint,
            de.colonia AS dir_colonia,
            de.ciudad AS dir_ciudad,
            de.estado AS dir_estado,
            de.cp AS dir_cp,
            de.referencia AS dir_referencia
        FROM transacciones t
        JOIN depositos d ON t.idtransacciones = d.transacciones_idtransacciones
        JOIN inversionista i ON t.inversionista_id_inver = i.id_inver
        LEFT JOIN transaccion_adicionales ta ON t.idtransacciones = ta.transacciones_idtransacciones
        LEFT JOIN direccionenvio de ON ta.id_direccionenvio = de.id_direccionenvio
        WHERE t.idtransacciones = ?
        LIMIT 1
    ");
    $stmt->execute([$id]);
    $orden = $stmt->fetch();

    if (!$orden) {
        echo json_encode(['error' => 'Orden no encontrada']);
        exit;
    }

    // Calcular folio y totales
    $costoEnvio = (float)($orden['costo_envio'] ?? 0);
    $subtotal   = (float)($orden['cantidad'] ?? 0) - $costoEnvio;
    $orden['subtotal']   = $subtotal;
    $orden['total']      = (float)($orden['cantidad'] ?? 0);
    $orden['folio']      = 'RRB-' . str_pad($id, 6, '0', STR_PAD_LEFT);

    // Productos de la orden
    $stmtItems = $pdo->prepare("
        SELECT
            pv.nombre,
            pv.cantidad,
            (pv.precio * pv.cantidad) AS subtotal
        FROM pagovta pv
        WHERE pv.transacciones_idtransacciones = ?
    ");
    $stmtItems->execute([$id]);
    $items = $stmtItems->fetchAll();

    echo json_encode(['orden' => $orden, 'items' => $items]);
    exit;
}

// ─── Endpoint: lista de órdenes pendientes ────────────────────────────────────
$stmt = $pdo->query("
    SELECT
        t.idtransacciones,
        t.tipostr_idtipostr AS tipo,
        t.fecha,
        i.nombre, i.appat, i.apmat, i.rfc,
        d.cantidad AS total,
        d.puntos,
        ta.cdentrega,
        ta.confirmaDeposito AS metodo_pago
    FROM transacciones t
    JOIN depositos d ON t.idtransacciones = d.transacciones_idtransacciones
    JOIN inversionista i ON t.inversionista_id_inver = i.id_inver
    LEFT JOIN transaccion_adicionales ta ON t.idtransacciones = ta.transacciones_idtransacciones
    WHERE (t.tipostr_idtipostr = 7 OR t.tipostr_idtipostr = 8)
      AND t.idtransacciones > 360000
    ORDER BY t.idtransacciones DESC
");
$ordenes = $stmt->fetchAll();

// Agregar folio calculado
foreach ($ordenes as &$o) {
    $o['folio'] = 'RRB-' . str_pad($o['idtransacciones'], 6, '0', STR_PAD_LEFT);
}
unset($o);

echo json_encode(['ordenes' => $ordenes]);
