-- Una recalendarización PENDIENTE por profesor. Semana 25-31 ene 2026.
-- fecha_original: en esa semana, el día que coincida con fk_id_cat_dia de la clase (1=Lun..7=Dom → 26=Lun, 27=Mar, 28=Mié, 29=Jue, 30=Vie, 31=Sáb, 25=Dom).
-- fecha_nueva: día siguiente a fecha_original.
-- Requiere: cat_recalendarizacion_estatus (id 1 = PENDIENTE).

INSERT INTO clase_recalendarizaciones (
  fk_id_clase, fecha_original, fecha_nueva, hora_inicio_nueva, hora_fin_nueva, fk_id_salon_nuevo,
  estado, motivo_solicitud, fk_id_estatus_general, fk_id_estatus_profesor, fk_id_estatus_tutor, f_reg, f_mod
)
SELECT
  c.id_clase,
  ('2026-01-' || CASE WHEN c.fk_id_cat_dia = 7 THEN 25 ELSE 25 + c.fk_id_cat_dia END)::date,  -- 1=Lun->26, 2->27, ..., 6->31, 7=Dom->25
  ('2026-01-' || CASE WHEN c.fk_id_cat_dia = 7 THEN 25 ELSE 25 + c.fk_id_cat_dia END)::date + 1,  -- día siguiente
  c.hora_inicio, c.hora_fin, c.fk_id_salon,
  'PENDIENTE', 'Solicitud de prueba seed', 1, 1, 1, NOW(), NOW()
FROM (
  SELECT DISTINCT ON (c.fk_id_usuario_profesor) c.id_clase, c.fk_id_cat_dia, c.hora_inicio, c.hora_fin, c.fk_id_salon
  FROM clases c
  JOIN usuarios u ON u.id_usuario = c.fk_id_usuario_profesor AND u.fk_id_cat_tipo_usuario = 2
  WHERE c.activo = true
  ORDER BY c.fk_id_usuario_profesor, c.id_clase
) c;
