+page.server.js 1.5 KB
import { error } from '@sveltejs/kit';

const API_BASE = 'http://136.112.29.74/api/organismo';

export async function load({ params }) {
  const { codigo } = params;

  const res = await fetch(`${API_BASE}/${codigo}`);
  if (!res.ok) throw error(404, 'Organismo no encontrado');
  const organismo = await res.json();

  let padres = [];
  let hijos = [];

  try {
    const clasRes = await fetch(`${API_BASE}/clasificador`);
    if (clasRes.ok) {
      const clasificador = await clasRes.json();
      const current = clasificador.find(c => c.organismo === parseInt(codigo));
      if (current) {
        // Padres: grupo y subgrupo (como objetos virtuales para navegación)
        padres = [
          { organismo: `grupo_${current.organismo_grupo}`, desc_organismo: current.desc_organismo_grupo, nivel: 'grupo', sigla: current.sigla_organismo_grupo },
          { organismo: `subgrupo_${current.organismo_grupo}_${current.organismo_subgrupo}`, desc_organismo: current.desc_organismo_subgrupo, nivel: 'subgrupo', sigla: current.sigla_organismo_subgrupo }
        ];

        // Hijos: otros organismos del mismo subgrupo
        hijos = clasificador.filter(c =>
          c.organismo_grupo === current.organismo_grupo &&
          c.organismo_subgrupo === current.organismo_subgrupo &&
          c.organismo !== current.organismo &&
          c.organismo !== 0
        ).sort((a, b) => (a.desc_organismo || '').localeCompare(b.desc_organismo || ''));
      }
    }
  } catch { /* optional */ }

  return { organismo, padres, hijos };
}