<?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();

// Últimos 6 meses
$fechaInicio = date('Y-m-d', strtotime('-6 months'));
$fechaFin    = date('Y-m-d');

try {
    // Notas tipo 11 (Por Asignar) del usuario logueado en los últimos 6 meses
    // Cantidad pagada viene de SUM(depositos.cantidad)
    $stmt = $db->prepare(
        "SELECT
            t.idtransacciones,
            t.fechat AS fecha,
            t.nota,
            COALESCE(SUM(d.cantidad), 0) AS cantidad_pagada,
            COALESCE(SUM(d.puntos), 0)   AS puntos_totales,
            COALESCE(
                (SELECT SUM(ns2.cant - ns2.asignar)
                 FROM nsalida ns2
                 WHERE ns2.transacciones_idtransacciones = t.idtransacciones
                   AND (ns2.cant - ns2.asignar) > 0),
                0
            ) AS pendiente_asignar,
            COALESCE(
                (SELECT SUM(ns3.cant)
                 FROM nsalida ns3
                 WHERE ns3.transacciones_idtransacciones = t.idtransacciones),
                0
            ) AS total_nsalida,
            COALESCE(
                (SELECT SUM(ns4.asignar)
                 FROM nsalida ns4
                 WHERE ns4.transacciones_idtransacciones = t.idtransacciones),
                0
            ) AS ya_asignado
         FROM transacciones t
         LEFT JOIN depositos d ON d.transacciones_idtransacciones = t.idtransacciones
         WHERE t.inversionista_id_inver = ?
           AND t.tipostr_idtipostr = 11
           AND t.fechat BETWEEN ? AND ?
         GROUP BY t.idtransacciones
         ORDER BY t.idtransacciones DESC"
    );
    $stmt->execute([$idinv, $fechaInicio, $fechaFin]);
    $rows = $stmt->fetchAll(PDO::FETCH_ASSOC);

    $notas = [];
    foreach ($rows as $row) {
        $notas[] = [
            'idtransacciones'   => (int)$row['idtransacciones'],
            'fecha'             => $row['fecha'],
            'nota'              => $row['nota'] ?? '',
            'cantidad_pagada'   => (float)$row['cantidad_pagada'],
            'puntos_totales'    => (float)$row['puntos_totales'],
            'pendiente_asignar' => (int)$row['pendiente_asignar'],
            'ya_asignado'       => (int)$row['ya_asignado'],
            'total_nsalida'     => (int)$row['total_nsalida'],
            'tiene_pendiente'   => ((int)$row['pendiente_asignar']) > 0,
        ];
    }

    jsonOk([
        'notas'  => $notas,
        'total'  => count($notas),
        'periodo'=> ['inicio' => $fechaInicio, 'fin' => $fechaFin],
    ]);

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