<?php
/**
 * depositos-banco.php
 * GET ?mes={1-12}&anio={YYYY}
 * Devuelve transacciones con depósito/transferencia en bancos BBVA(1), Santander(3) y HSBC(18)
 * para tipos de nota 10, 11 y 6 en el mes/año indicado.
 */
header('Content-Type: application/json; charset=utf-8');
header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Headers: Authorization, Content-Type');
if ($_SERVER['REQUEST_METHOD'] === 'OPTIONS') { http_response_code(204); exit; }

require_once __DIR__ . '/../../config.php';
$db = getDB();
$db->exec("SET NAMES utf8mb4");

// ── Parámetros ──────────────────────────────────────────────────────────────
$mes  = isset($_GET['mes'])  ? (int)$_GET['mes']  : (int)date('m');
$anio = isset($_GET['anio']) ? (int)$_GET['anio'] : (int)date('Y');

if ($mes < 1 || $mes > 12 || $anio < 2000 || $anio > 2099) {
    http_response_code(400);
    echo json_encode(['ok' => false, 'error' => 'Mes o año inválido'], JSON_UNESCAPED_UNICODE);
    exit;
}

// Rango del mes completo
$desde = sprintf('%04d-%02d-01', $anio, $mes);
$hasta = date('Y-m-t', strtotime($desde));

try {
    $sql = "
        SELECT
            fechat,
            transacciones.idtransacciones             AS trans,
            usuarios_ci_idusuarios_ci                  AS cd,
            consec,
            inversionista_id_inver                     AS inv,
            TRIM(CONCAT_WS(' ', inversionista.nombre, inversionista.appat, inversionista.apmat)) AS nombre_completo,
            cuenta,
            monto,
            bancos.idbanco                             AS idbanco
        FROM transacciones
        JOIN depositos_transaccion
            ON transacciones.idtransacciones = depositos_transaccion.idtransacciones
        JOIN inversionista
            ON transacciones.inversionista_id_inver = inversionista.id_inver
        JOIN bancos
            ON depositos_transaccion.idbanco = bancos.idbanco
        WHERE depositos_transaccion.tipo = 2
          AND ( bancos.idbanco = 1 OR bancos.idbanco = 3 OR bancos.idbanco = 18 )
          AND ( tipostr_idtipostr = 10 OR tipostr_idtipostr = 11 OR tipostr_idtipostr = 6 )
          AND fechat BETWEEN :desde AND :hasta
        ORDER BY fechat ASC, trans ASC
    ";

    $stmt = $db->prepare($sql);
    $stmt->bindValue(':desde', $desde . ' 00:00:00');
    $stmt->bindValue(':hasta', $hasta . ' 23:59:59');
    $stmt->execute();

    $rows = $stmt->fetchAll(PDO::FETCH_ASSOC);

    $total = 0.0;
    foreach ($rows as $r) {
        $total += (float)$r['monto'];
    }

    echo json_encode([
        'ok'    => true,
        'desde' => $desde,
        'hasta' => $hasta,
        'total' => $total,
        'count' => count($rows),
        'data'  => $rows,
    ], JSON_UNESCAPED_UNICODE);

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