<?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; }

// REGLA CRÍTICA: config.php está DOS niveles arriba desde admin/api/
require_once __DIR__ . '/../../config.php';

// ── Auth ──────────────────────────────────────────────────────────────────────
$headers    = getallheaders();
$authHeader = $headers['Authorization'] ?? $headers['authorization'] ?? '';
if (!preg_match('/Bearer\s+(.+)/i', $authHeader, $m)) {
    http_response_code(401);
    echo json_encode(['success' => false, 'message' => 'Token requerido']);
    exit;
}
$token = trim($m[1]);
$db    = getDB();

$stmtSess = $db->prepare(
    "SELECT idusuarios_sist FROM admin_sessions WHERE token = ? AND expira > NOW() LIMIT 1"
);
$stmtSess->execute([$token]);
if (!$stmtSess->fetch()) {
    http_response_code(401);
    echo json_encode(['success' => false, 'message' => 'Sesión inválida']);
    exit;
}

// ── Parámetros ────────────────────────────────────────────────────────────────
$cdentrega = isset($_GET['cdentrega']) ? (int)$_GET['cdentrega'] : 0;
if ($cdentrega <= 0) {
    echo json_encode(['success' => false, 'message' => 'cdentrega requerido']);
    exit;
}

// Rango: últimos 6 meses
$desde = date('Y-m-d', strtotime('-6 months'));
$hasta = date('Y-m-d');

// ── Info del centro ───────────────────────────────────────────────────────────
$stmtCentro = $db->prepare("SELECT nombre FROM usuarios_ci WHERE idusuarios_ci = ? LIMIT 1");
$stmtCentro->execute([$cdentrega]);
$centro = $stmtCentro->fetch(PDO::FETCH_ASSOC);
$nombreCentro = $centro ? $centro['nombre'] : "Centro $cdentrega";

// ── Productos agrupados pendientes para ese centro ────────────────────────────
$stmtProds = $db->prepare("
    SELECT
        pr.id_prod                          AS idprod,
        pr.nombreProd                       AS nombre,
        pr.presentacion,
        SUM(p.cant)                         AS total_unidades,
        COUNT(DISTINCT t.idtransacciones)   AS notas
    FROM transacciones t
    JOIN pedido p       ON p.transacciones_idtransacciones = t.idtransacciones
    JOIN productos pr   ON pr.id_prod = p.productos_idprod
    WHERE t.tipostr_idtipostr IN (6, 10, 11)
      AND t.statusentrega = 'PENDIENTE'
      AND t.cdentrega = ?
      AND t.fechat BETWEEN ? AND ?
    GROUP BY pr.id_prod, pr.nombreProd, pr.presentacion
    ORDER BY total_unidades DESC
");
$stmtProds->execute([$cdentrega, $desde, $hasta]);
$productos = $stmtProds->fetchAll(PDO::FETCH_ASSOC);

// Castear tipos
$totalUnidades = 0;
$totalNotas    = 0;
foreach ($productos as &$prod) {
    $prod['idprod']          = (int)$prod['idprod'];
    $prod['total_unidades']  = (int)$prod['total_unidades'];
    $prod['notas']           = (int)$prod['notas'];
    $totalUnidades          += $prod['total_unidades'];
    $totalNotas             += $prod['notas'];
}
unset($prod);

echo json_encode([
    'success'        => true,
    'cdentrega'      => $cdentrega,
    'nombre_centro'  => $nombreCentro,
    'desde'          => $desde,
    'hasta'          => $hasta,
    'productos'      => $productos,
    'total_unidades' => $totalUnidades,
    'total_notas'    => $totalNotas,
], JSON_UNESCAPED_UNICODE);
