/** API `method_archetype`-Werte (Backend `COMBINATION_ARCHETYPE_IDS`). */

export const COMBINATION_ARCHETYPE_OPTIONS = [
  { id: 'sequence_linear', label: 'Lineare Sequenz' },
  { id: 'circuit_rotate_time', label: 'Rotierender Zirkel (Zeit)' },
  { id: 'circuit_all_parallel', label: 'Parallele Stationen' },
  { id: 'station_parcour', label: 'Parcours' },
  { id: 'pair_superset', label: 'Partner- / Paarwechsel' },
  { id: 'time_domain_interval', label: 'Intervallblock (Zeitdomäne)' },
  { id: 'free_method_block', label: 'Freier Methodenblock' },
]

const LABEL_BY_ID = Object.fromEntries(
  COMBINATION_ARCHETYPE_OPTIONS.map((o) => [String(o.id), o.label]),
)

/** Coach-/Lesetexte: strukturieren die Erwartung, nicht die komplette Methodik */
const COACH_HINT_BY_ID = {
  sequence_linear:
    'Station für Station der Reihenfolge nach durchfahren. Pro Abschnitt zuerst klarziehen, dann erst zur nächsten Übung übergehen.',
  circuit_rotate_time:
    'Zirkelsystem nach Zeitfenster drehen oder Gruppe weitergeben. Halte Rotation und Pausen an der Kombi-Beschreibung fest.',
  circuit_all_parallel:
    'Alle Stationen parallel nutzen: Aufteilen, gleicher Zeitraum bzw. Rundenlogik wie in dieser Kombination beschrieben.',
  station_parcour:
    'Parcours: Besuchsreihenfolge und Regeln (z.\u202fB. Stopp-/Wechselpunkte) aus der Kombi-Beschreibung und Stationsnamen.',
  pair_superset:
    'Nach Paar-/Superset-Logik abstimmen: z.\u202fB. Übung A ↔ B oder Abwechseln — Rhythmus an der Kombi oder Stationen ausrichten.',
  time_domain_interval:
    'Strikt an die Zeituhr bzw. Intervallarbeit halten (Arbeit, Pause, Etappen). Kombi beschreibt meist Arbeit–Pause–Schema.',
  free_method_block:
    'Lockerer Stationenblock: Reihenfolge und Verweildauer können flexibel sein — Stationsübungen unten sind die angebotenen Bausteine.',
}

export function combinationArchetypeLabel(archetypeId) {
  if (archetypeId == null || String(archetypeId).trim() === '') {
    return null
  }
  const key = String(archetypeId).trim()
  return LABEL_BY_ID[key] || key
}

export function archetypeCoachHint(archetypeId) {
  if (archetypeId == null || String(archetypeId).trim() === '') {
    return 'Nutze die Stationen wie in der Kombi-Beschreibung oben angelegt.'
  }
  const key = String(archetypeId).trim()
  return COACH_HINT_BY_ID[key] || 'Nutze die Stationen entsprechend dem gewählten Archetyp und der Kombination-Beschreibung.'
}

export function sortCombinationSlotsForDisplay(slotsRaw) {
  if (!Array.isArray(slotsRaw) || slotsRaw.length === 0) return []
  return [...slotsRaw].sort((a, b) => {
    const ia = Number(a.slot_index)
    const ib = Number(b.slot_index)
    const na = Number.isFinite(ia) ? ia : 0
    const nb = Number.isFinite(ib) ? ib : 0
    if (na !== nb) return na - nb
    return String(a.title || '').localeCompare(String(b.title || ''), 'de')
  })
}
