export type LscEntryType = 'beobachtung' | 'massnahme'
export type EntryFilter = 'alle' | LscEntryType

export type LscStatus = 'offen' | 'in_arbeit' | 'erledigt'
export type LscPriority = 'hoch' | 'mittel' | 'niedrig'

export interface LscEntry {
  id: string
  project_id: string
  title: string
  type: LscEntryType
  status: LscStatus
  priority: LscPriority
  effort_level: number | null
  benefit_level: number | null
  matrix_x: number | null
  matrix_y: number | null
}

export function isObservation(entry: LscEntry): boolean {
  return entry.type === 'beobachtung'
}

export function isMeasure(entry: LscEntry): boolean {
  return entry.type === 'massnahme'
}

export function promoteToMeasure<T extends LscEntry>(entry: T): T {
  return { ...entry, type: 'massnahme' }
}

export function filterByType<T extends LscEntry>(entries: T[], filter: EntryFilter): T[] {
  if (filter === 'alle') return entries
  return entries.filter((e) => e.type === filter)
}

export const ENTRY_TYPE_LABELS: Record<LscEntryType, string> = {
  beobachtung: 'Beobachtung',
  massnahme: 'Massnahme',
}

export const ENTRY_FILTER_LABELS: Record<EntryFilter, string> = {
  alle: 'Alle',
  beobachtung: 'Beobachtungen',
  massnahme: 'Massnahmen',
}
