/** * GET /api/externos/carretas * * Obtiene las carretas del período de cosecha desde Metabase. * Incluye información de estado de vinculación. */ import { getCarretas } 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 carretas desde Metabase const carretas = await getCarretas(periodo) // Obtener IDs ya vinculados desde nuestra BD local const vinculados = await getRegistrosVinculados('carreta', periodo) const vinculadosSet = new Set(vinculados) // Marcar cada carreta con su estado de vinculación const carretasConEstado = carretas.map((carreta: any) => ({ ...carreta, vinculado: vinculadosSet.has(carreta.id), })) // Filtrar si solo se quieren los no vinculados const resultado = soloSinVincular ? carretasConEstado.filter((c: any) => !c.vinculado) : carretasConEstado return { success: true, data: resultado, meta: { total: resultado.length, vinculados: carretasConEstado.filter((c: any) => c.vinculado).length, sinVincular: carretasConEstado.filter((c: any) => !c.vinculado).length, periodo, }, } } catch (error: any) { console.error('[API] Error obteniendo carretas:', error) throw createError({ statusCode: error.statusCode || 500, statusMessage: error.message || 'Error obteniendo carretas', }) } })