<?php
header('Content-Type: application/json; charset=utf-8');
header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Methods: GET, OPTIONS');
header('Access-Control-Allow-Headers: Content-Type, Authorization');
if ($_SERVER['REQUEST_METHOD'] === 'OPTIONS') { http_response_code(200); exit; }

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

// ── Autenticación por token Bearer (igual que verify-token.php) ──
$headers    = getallheaders();
$authHeader = $headers['Authorization'] ?? $headers['authorization'] ?? '';
$token      = str_replace('Bearer ', '', $authHeader);

if (empty($token)) {
    http_response_code(401);
    echo json_encode(['success' => false, 'message' => 'Token requerido']);
    exit;
}

$db  = getDB();
$now = date('Y-m-d H:i:s');
$stmt = $db->prepare(
    "SELECT s.idusuarios_sist FROM admin_sessions s
     WHERE s.token = ? AND s.expira > ? LIMIT 1"
);
$stmt->execute([$token, $now]);
if (!$stmt->fetch()) {
    http_response_code(401);
    echo json_encode(['success' => false, 'message' => 'Sesión expirada o inválida']);
    exit;
}

if ($_SERVER['REQUEST_METHOD'] !== 'GET') {
    http_response_code(405);
    echo json_encode(['success' => false, 'message' => 'Método no permitido']);
    exit;
}

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

$fechaInicio = sprintf('%04d-%02d-01', $anio, $mes);
$fechaFin    = date('Y-m-t', mktime(0, 0, 0, $mes, 1, $anio));

$sql = "
    SELECT
        i.id_inver,
        i.referencia,
        i.rfc,
        TRIM(CONCAT(i.nombre, ' ', i.appat, ' ', COALESCE(i.apmat,''))) AS nombre_completo,
        SUM(d.puntos) AS puntos
    FROM transacciones t
    JOIN depositos d ON t.idtransacciones = d.transacciones_idtransacciones
    JOIN inversionista i ON t.inversionista_id_inver = i.id_inver
    WHERE (t.tipostr_idtipostr = 10 OR t.tipostr_idtipostr = 12)
      AND t.fechat BETWEEN :fechaInicio AND :fechaFin
    GROUP BY i.id_inver, i.referencia, i.rfc, i.nombre, i.appat, i.apmat
    HAVING SUM(d.puntos) > 624
    ORDER BY SUM(d.puntos) DESC
";

$stmt = $db->prepare($sql);
$stmt->execute([':fechaInicio' => $fechaInicio, ':fechaFin' => $fechaFin]);
$rows = $stmt->fetchAll(PDO::FETCH_ASSOC);

// Separar en dos grupos
$grupo1 = []; // 625 – 1499 puntos (calificación parcial)
$grupo2 = []; // 1500+ puntos (calificados plenos)

foreach ($rows as $row) {
    $row['puntos'] = (float)$row['puntos'];
    if ($row['puntos'] >= 1500) {
        $grupo2[] = $row;
    } else {
        $grupo1[] = $row;
    }
}

echo json_encode([
    'success'      => true,
    'mes'          => $mes,
    'anio'         => $anio,
    'fechaInicio'  => $fechaInicio,
    'fechaFin'     => $fechaFin,
    'total'        => count($rows),
    'grupo1_count' => count($grupo1),
    'grupo2_count' => count($grupo2),
    'grupo1'       => $grupo1,  // 625 – 1499
    'grupo2'       => $grupo2,  // 1500+
]);
