<?php
declare(strict_types=1);
require_once dirname(__FILE__) . '/../config.php';

if ($_SERVER['REQUEST_METHOD'] !== 'GET') {
    jsonErr(405, 'Metodo no permitido.');
}

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

$tipoLabel = [
    6  => 'Especial',
    7  => 'Venta Pendiente',
    8  => 'Venta Pendiente',
    10 => 'Venta',
    11 => 'Por Asignar',
    12 => 'Asignacion',
];

try {
    $stmt = $db->prepare(
        "SELECT
            t.idtransacciones,
            t.tipostr_idtipostr,
            t.fechat,
            d.cantidad,
            d.puntos
         FROM transacciones t
         JOIN depositos d ON t.idtransacciones = d.transacciones_idtransacciones
         WHERE t.inversionista_id_inver = ?
           AND t.tipostr_idtipostr IN (6, 7, 8, 10, 11, 12)
           AND t.fechat >= DATE_SUB(CURDATE(), INTERVAL 6 MONTH)
         ORDER BY t.fechat DESC, t.idtransacciones DESC"
    );
    $stmt->execute([$idinv]);
    $rows = $stmt->fetchAll(PDO::FETCH_ASSOC);

    $transacciones = [];
    foreach ($rows as $r) {
        $tipo = (int)$r['tipostr_idtipostr'];
        $transacciones[] = [
            'idtransacciones'   => (int)$r['idtransacciones'],
            'tipostr_idtipostr' => $tipo,
            'tipo_label'        => $tipoLabel[$tipo] ?? 'Desconocido',
            'es_pendiente'      => in_array($tipo, [7, 8]),
            'es_especial'       => ($tipo === 6),
            'fechat'            => $r['fechat'],
            'cantidad'          => (float)$r['cantidad'],
            'puntos'            => (int)$r['puntos'],
        ];
    }

    jsonOk(['transacciones' => $transacciones]);

} catch (Throwable $e) {
    http_response_code(500);
    echo json_encode([
        'success' => false,
        'message' => 'Error interno: ' . $e->getMessage(),
    ], JSON_UNESCAPED_UNICODE);
    exit;
}
