<?php
declare(strict_types=1);
require_once dirname(__FILE__) . '/../config.php';

// Este endpoint NO requiere autenticación
// Devuelve el catálogo público de productos

if ($_SERVER['REQUEST_METHOD'] !== 'GET') {
    jsonErr(405, 'Metodo no permitido.');
}

try {
    $db = getDB();

    // URL base de las imagenes de productos
    $baseUrl = 'https://api.sistemarrb.com/catalog/';

    // Productos disponibles para venta al publico (puv=1)
    // tipoprod=1 -> Productos de linea
    // tipoprod=2 -> Inscripciones
    $stmtProd = $db->prepare(
        'SELECT id_prod, nombreProd, precio, puntos, tipoprod, presentacion, COALESCE(peso, 0) AS peso
         FROM productos
         WHERE puv = 1
         ORDER BY tipoprod ASC, nombreProd ASC'
    );
    $stmtProd->execute();
    $rows = $stmtProd->fetchAll();

    $linea         = [];
    $inscripciones = [];

    foreach ($rows as $r) {
        $idProd = (int)$r['id_prod'];
        $imgUrl = $baseUrl . $idProd . '.png';

        $item = [
            'id_prod'      => $idProd,
            'nombre'       => $r['nombreProd'],
            'precio'       => (float)$r['precio'],
            'puntos'       => (float)$r['puntos'],
            'presentacion' => $r['presentacion'] ?? '',
            'tipoprod'     => (int)$r['tipoprod'],
            'imagen'       => $imgUrl,
            'peso'         => (float)($r['peso'] ?? 0), // peso en gramos
        ];

        if ((int)$r['tipoprod'] === 2) {
            $inscripciones[] = $item;
        } else {
            $linea[] = $item;
        }
    }

    // Promociones activas (tipo_promo=7 y activa=1)
    // Se incluye el campo peso directamente de promod
    $stmtPromo = $db->prepare(
        'SELECT id_promo, promodesc, precio, puntos, COALESCE(peso, 0) AS peso
         FROM promod
         WHERE tipo_promo = 7 AND activa = 1
         ORDER BY promodesc ASC'
    );
    $stmtPromo->execute();
    $rowsPromo = $stmtPromo->fetchAll();

    $promociones = [];
    foreach ($rowsPromo as $p) {
        $idPromo = (int)$p['id_promo'];
        $imgUrl  = $baseUrl . 'promo_' . $idPromo . '.png';

        $promociones[] = [
            'idpromod' => $idPromo,
            'nombre'   => $p['promodesc'],
            'precio'   => (float)$p['precio'],
            'puntos'   => (float)$p['puntos'],
            'imagen'   => $imgUrl,
            'peso'     => (float)($p['peso'] ?? 0), // peso en gramos desde promod
        ];
    }

    // bancos para la pantalla de nueva compra
    $stmtBancos = $db->prepare('SELECT idbanco, nombre FROM banco ORDER BY nombre');
    $stmtBancos->execute();
    $bancos = $stmtBancos->fetchAll();

    jsonOk([
        'linea'         => $linea,
        'inscripciones' => $inscripciones,
        'promociones'   => $promociones,
        'total'         => count($rows),
        'bancos'        => $bancos,
    ]);

} catch (Throwable $e) {
    // Capturar cualquier error PHP 8 (Throwable es la clase base)
    http_response_code(500);
    echo json_encode([
        'success' => false,
        'message' => 'Error interno: ' . $e->getMessage(),
        'debug' => [
            'file' => $e->getFile(),
            'line' => $e->getLine(),
        ],
    ], JSON_UNESCAPED_UNICODE);
    exit;
}
