import { getTrazabilidad, getEstadisticasLote } from '../../../utils/queries'

/**
 * GET /api/lotes/:id/trazabilidad
 * Obtiene el historial completo de trazabilidad de un lote
 *
 * Retorna todos los lotes ancestros hasta llegar a los ingresos iniciales,
 * organizado por profundidad (0 = lote actual, n = ancestros más antiguos)
 */
export default defineEventHandler(async (event) => {
  try {
    const id = getRouterParam(event, 'id')

    if (!id) {
      throw createError({
        statusCode: 400,
        statusMessage: 'ID de lote requerido',
      })
    }

    const isUuid = /^[0-9a-fA-F-]{36}$/.test(id)
    if (!isUuid) {
      throw createError({
        statusCode: 400,
        statusMessage: 'ID de lote inválido',
      })
    }

    // Obtener trazabilidad completa
    const trazabilidad = await getTrazabilidad(id)

    if (trazabilidad.length === 0) {
      throw createError({
        statusCode: 404,
        statusMessage: 'Lote no encontrado',
      })
    }

    // Obtener estadísticas
    const estadisticas = await getEstadisticasLote(id)

    return {
      success: true,
      data: {
        historial: trazabilidad,
        estadisticas,
      },
    }
  } catch (error: any) {
    console.error('Error obteniendo trazabilidad:', error)

    if (error.statusCode) {
      throw error
    }

    throw createError({
      statusCode: 500,
      statusMessage: 'Error obteniendo trazabilidad',
      data: { message: error.message },
    })
  }
})
