<?php



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

// GET /admin/transacciones/list.php
// Query params: tipo, fecha_desde, fecha_hasta, centro, status, page, limit

requireAdmin();

$db = getDB();
$page = max(1, (int)($_GET['page'] ?? 1));
$limit = min(100, max(1, (int)($_GET['limit'] ?? 20)));
$offset = ($page - 1) * $limit;
$tipo = $_GET['tipo'] ?? '';
$fechaDesde = $_GET['fecha_desde'] ?? '';
$fechaHasta = $_GET['fecha_hasta'] ?? '';
$centro = $_GET['centro'] ?? '';

$where = [];
$params = [];

if (!empty($tipo)) {
    $where[] = 't.tipo = ?';
    $params[] = $tipo;
}

if (!empty($fechaDesde)) {
    $where[] = 't.fecha >= ?';
    $params[] = $fechaDesde;
}

if (!empty($fechaHasta)) {
    $where[] = 't.fecha <= ?';
    $params[] = $fechaHasta;
}

if (!empty($centro)) {
    $where[] = 't.centros_idcd = ?';
    $params[] = $centro;
}

$whereClause = !empty($where) ? 'WHERE ' . implode(' AND ', $where) : '';

$countSql = "SELECT COUNT(*) as total FROM transacciones t $whereClause";
$stmt = $db->prepare($countSql);
$stmt->execute($params);
$total = $stmt->fetch()['total'] ?? 0;

$sql = "
    SELECT t.idtransacciones, t.tipo, t.fecha, t.centros_idcd, 
           i.nombre, i.appat, i.apmat, i.email,
           d.cantidad, d.puntos, d.status,
           c.nombre as centro_nombre
    FROM transacciones t
    LEFT JOIN inversionista i ON t.inversionista_id_inver = i.id_inver
    LEFT JOIN depositos d ON t.idtransacciones = d.transacciones_idtransacciones
    LEFT JOIN centros c ON t.centros_idcd = c.idcd
    $whereClause
    ORDER BY t.fecha DESC
    LIMIT ? OFFSET ?
";

$params[] = $limit;
$params[] = $offset;

$stmt = $db->prepare($sql);
$stmt->execute($params);
$transacciones = $stmt->fetchAll();

jsonOk([
    'transacciones' => $transacciones,
    'pagination' => [
        'page' => $page,
        'limit' => $limit,
        'total' => (int)$total,
        'pages' => (int)ceil($total / $limit)
    ]
]);
