<?php
/**
 * distribuidores-ganancias.php — Ganancias de un distribuidor en los últimos 6 meses
 * GET /admin/api/distribuidores-ganancias.php?id=ID_INVER
 */
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: Authorization, Content-Type');
if ($_SERVER['REQUEST_METHOD'] === 'OPTIONS') { http_response_code(204); exit; }

require_once __DIR__ . '/../../config.php';
$db = getDB();

// ── Validar token ────────────────────────────────────────────────────────────
$headers    = getallheaders();
$authHeader = $headers['Authorization'] ?? $headers['authorization'] ?? '';
if (!preg_match('/Bearer\s+(.+)/i', $authHeader, $m)) {
    http_response_code(401);
    echo json_encode(['ok' => false, 'error' => 'Token requerido']);
    exit;
}
$token = trim($m[1]);
$stmtTok = $db->prepare("SELECT idusuarios_sist FROM admin_sessions WHERE token = ? AND expira > NOW()");
$stmtTok->execute([$token]);
if (!$stmtTok->fetch()) {
    http_response_code(401);
    echo json_encode(['ok' => false, 'error' => 'Sesión inválida o expirada']);
    exit;
}

// ── Parámetros ───────────────────────────────────────────────────────────────
$id = (int)($_GET['id'] ?? 0);
if (!$id) {
    echo json_encode(['ok' => false, 'error' => 'ID requerido']);
    exit;
}

// ── Query ────────────────────────────────────────────────────────────────────
// El mes de fechap es el mes en que se calcularon, pero corresponden al mes anterior
// Ej: mes 3 (marzo) → corresponde a febrero
$stmt = $db->prepare("
    SELECT
        r.idreg,
        r.total,
        r._real,
        r.apagar,
        r.impuestos,
        r.pagado,
        r.status,
        r.fechap,
        r.fechaf,
        r.observaciones,
        p.nocuenta,
        p.folio,
        MONTH(r.fechap)                                    AS mes_calculo,
        YEAR(r.fechap)                                     AS anio_calculo,
        CASE MONTH(r.fechap)
            WHEN 1  THEN 'Diciembre'
            WHEN 2  THEN 'Enero'
            WHEN 3  THEN 'Febrero'
            WHEN 4  THEN 'Marzo'
            WHEN 5  THEN 'Abril'
            WHEN 6  THEN 'Mayo'
            WHEN 7  THEN 'Junio'
            WHEN 8  THEN 'Julio'
            WHEN 9  THEN 'Agosto'
            WHEN 10 THEN 'Septiembre'
            WHEN 11 THEN 'Octubre'
            WHEN 12 THEN 'Noviembre'
        END                                                AS mes_nombre,
        CASE MONTH(r.fechap)
            WHEN 1  THEN YEAR(r.fechap) - 1
            ELSE YEAR(r.fechap)
        END                                                AS anio_corresponde
    FROM regs2 r
    LEFT JOIN pagos p ON p.idreg = r.idreg
    WHERE r.id_inver = ?
      AND r.fechap >= NOW() - INTERVAL 6 MONTH
    ORDER BY r.fechap DESC
");
$stmt->execute([$id]);
$rows = $stmt->fetchAll(PDO::FETCH_ASSOC);

// Mapear status a etiqueta legible
$statusLabel = [0 => 'Por Pagar', 1 => 'Depósito', 5 => 'Voucher', 20 => 'Retenida'];
foreach ($rows as &$row) {
    $row['status_label'] = $statusLabel[(int)$row['status']] ?? 'Desconocido';
}
unset($row);

echo json_encode(['ok' => true, 'ganancias' => $rows]);
