<?php
// purchases/list.php
// Devuelve las transacciones de los últimos 6 meses para el distribuidor autenticado.
// Solo tipos: 7 (Venta Pendiente), 8 (Venta Pendiente), 10 (Venta), 11 (Por Asignar), 12 (Asignación)

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: GET, OPTIONS');

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

// ── Auth ──────────────────────────────────────────────────────────────────────
$authHeader = $_SERVER['HTTP_AUTHORIZATION'] ?? '';
$token = str_replace('Bearer ', '', $authHeader);
if (!$token) {
    http_response_code(401);
    echo json_encode(['success' => false, 'message' => 'Token requerido.']);
    exit;
}

require_once __DIR__ . '/../config.php'; // define $pdo

// Verificar token y obtener id_inver
try {
    $stmt = $pdo->prepare("SELECT id_inver FROM usuario WHERE token = ? AND token IS NOT NULL LIMIT 1");
    $stmt->execute([$token]);
    $user = $stmt->fetch(PDO::FETCH_ASSOC);
    if (!$user) {
        http_response_code(401);
        echo json_encode(['success' => false, 'message' => 'Token inválido.']);
        exit;
    }
    $id_inver = (int)$user['id_inver'];
} catch (Exception $e) {
    http_response_code(500);
    echo json_encode(['success' => false, 'message' => 'Error de autenticación.']);
    exit;
}

// ── Consulta ──────────────────────────────────────────────────────────────────
try {
    $sql = "
        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 = :id_inver
          AND t.tipostr_idtipostr IN (7, 8, 10, 11, 12)
          AND t.fechat >= DATE_SUB(CURDATE(), INTERVAL 6 MONTH)
        ORDER BY t.fechat DESC, t.idtransacciones DESC
    ";
    $stmt = $pdo->prepare($sql);
    $stmt->execute([':id_inver' => $id_inver]);
    $rows = $stmt->fetchAll(PDO::FETCH_ASSOC);

    // Mapear etiqueta de tipo
    $tipoLabel = [
        7  => 'Venta Pendiente',
        8  => 'Venta Pendiente',
        10 => 'Venta',
        11 => 'Por Asignar',
        12 => 'Asignación',
    ];

    $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]),
            'fechat'             => $r['fechat'],
            'cantidad'           => (float)$r['cantidad'],
            'puntos'             => (int)$r['puntos'],
        ];
    }

    echo json_encode(['success' => true, 'data' => ['transacciones' => $transacciones]]);

} catch (Exception $e) {
    http_response_code(500);
    echo json_encode(['success' => false, 'message' => 'Error al consultar transacciones.']);
}
