/** * GET /api/externos/salidas * * Obtiene las salidas del período de cosecha desde Metabase. * Incluye información de estado de vinculación. */ import { getSalidas } from '../../utils/metabase' import { getRegistrosVinculados } from '../../utils/queries' export default defineEventHandler(async (event) => { try { const query = getQuery(event) const periodo = (query.periodo as string) || '25-26' const soloSinVincular = query.sinVincular === 'true' // Obtener salidas desde Metabase const salidas = await getSalidas(periodo) // Obtener IDs ya vinculados desde nuestra BD local const vinculados = await getRegistrosVinculados('salida', periodo) const vinculadosSet = new Set(vinculados) // Marcar cada salida con su estado de vinculación const salidasConEstado = salidas.map((salida: any) => ({ ...salida, vinculado: vinculadosSet.has(salida.id), })) // Filtrar si solo se quieren los no vinculados const resultado = soloSinVincular ? salidasConEstado.filter((s: any) => !s.vinculado) : salidasConEstado return { success: true, data: resultado, meta: { total: resultado.length, vinculados: salidasConEstado.filter((s: any) => s.vinculado).length, sinVincular: salidasConEstado.filter((s: any) => !s.vinculado).length, periodo, }, } } catch (error: any) { console.error('[API] Error obteniendo salidas:', error) throw createError({ statusCode: error.statusCode || 500, statusMessage: error.message || 'Error obteniendo salidas', }) } })