<?php
session_start();
// Limpia buffers para evitar que algo rompa el JSON
while (ob_get_level()) ob_end_clean();

header("Content-Type: application/json; charset=utf-8");
error_reporting(E_ERROR | E_PARSE);

require_once "../models/ArticuloModel.php";

/**
 * Convierte objetos a arrays recursivamente
 */
function convertirAArray($data) {
    if (is_array($data)) {
        return array_map('convertirAArray', $data);
    }
    if (is_object($data)) {
        return convertirAArray(get_object_vars($data));
    }
    return $data;
}

$modelo = new ArticuloModel();

/* =====================================================
   🔵 PETICIÓN: DETALLE DE PRODUCTO (1 SOLO)
   ===================================================== */
if (!empty($_POST['id_detalle'])) {

    $id = trim($_POST['id_detalle']);
    $ip = $_POST['ip'] ?? '';

    $resultado = $modelo->obtenerArticuloPorId($id, $ip);

    // Convertimos a array seguro
    $resultado = convertirAArray($resultado);

    // Si error, devolver tal cual
    if (isset($resultado['error'])) {
        echo json_encode($resultado, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES);
        exit;
    }

    // 🔥 IMPORTANTE: El detalle debe devolver un OBJETO, NO ARRAY
    echo json_encode($resultado, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES);
    exit;
}

/* =====================================================
   🔵 PETICIÓN: LISTA DE PRODUCTOS (array)
   ===================================================== */
$criterio = $_POST["criterio"] ?? "";
$ipEncriptada = $_POST["ip"] ?? "";

$resultado = $modelo->listarArticulos($criterio, $ipEncriptada);

// Convertimos todo a array seguro
$resultado = convertirAArray($resultado);

// La lista SIEMPRE debe devolver array
echo json_encode($resultado, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES);
exit;
