/**
 * Modelo de producción de cría para el cálculo de crecimiento de Varroa
 */

/**
 * Calcula la producción de huevos de la reina para un día específico del año
 * @param diaDelAnio - Día del año (1-365)
 * @param inicioTemporadaCria - Día del año en que inicia la temporada de cría
 * @param finTemporadaCria - Día del año en que finaliza la temporada de cría
 * @param pausaCria - Periodo opcional sin cría (ej. enjambrazón)
 * @returns Número estimado de huevos puestos por la reina en ese día
 */
export function calcularProduccionHuevos(
  diaDelAnio: number,
  inicioTemporadaCria: number = 50,
  finTemporadaCria: number = 300,
  pausaCria: { inicio: number, fin: number } | null = null
): number {
  // Ajustar día del año si es mayor a 365 (para predicciones de más de un año)
  const diaAjustado = diaDelAnio > 365 ? diaDelAnio - 365 : diaDelAnio;
  
  // Verificar si estamos en periodo de pausa de cría
  if (pausaCria && diaAjustado >= pausaCria.inicio && diaAjustado < pausaCria.fin) {
    return 0;
  }
  
  // Verificar si estamos fuera de la temporada de cría
  if (diaAjustado < inicioTemporadaCria || diaAjustado >= finTemporadaCria) {
    return 0;
  }
  
  // Primavera: crecimiento lineal
  if (diaAjustado >= inicioTemporadaCria && diaAjustado < 100) {
    return 25.0 * diaAjustado - 1250.0;
  }
  
  // Verano: polinomio de 3er orden
  if (diaAjustado >= 100 && diaAjustado < 180) {
    return -38048.29 + (896.6298 * diaAjustado) + 
           (-6.617866 * Math.pow(diaAjustado, 2)) + (0.01583144 * Math.pow(diaAjustado, 3));
  }
  
  // Otoño: decrecimiento lineal
  if (diaAjustado >= 180 && diaAjustado < finTemporadaCria) {
    return -10.09 * diaAjustado + 3022.0;
  }
  
  // Por defecto (no debería llegar aquí)
  return 0;
}
