import type { QAFRow } from '@/lib/qaf-parser'

export type ColumnGroup = 'alle' | 'material' | 'fertigung' | 'sbm'

export const COLUMN_GROUP_LABELS: Record<ColumnGroup, string> = {
  alle: 'Alle',
  material: 'Material',
  fertigung: 'Fertigung',
  sbm: 'SBM',
}

export const QAF_COLUMN_GROUPS = {
  material: new Set<keyof QAFRow>([
    'beschaffungswaehrung',
    'wechselkurs',
  ]),
  fertigung: new Set<keyof QAFRow>([
    'positionsnummer',
    'teilebenennung',
    'prozessbezeichnung',
    'bezeichnungAnlage',
    'standort',
    'zykluszeit',
    'teileProZyklus',
    'anzahlMA',
    'lohnkosten',
    'lohnzuschlagssaetze',
    'mss',
  ]),
  sbm: new Set<keyof QAFRow>([
    'ruestkosten',
    'fek',
    'rfgk',
    'fk',
    'angebotswaehrung',
    'anzahlProAngebotsteil',
    'fkAW',
    'ausschuss',
    'ausschusskosten',
  ]),
} as const

export function groupContains(group: ColumnGroup, col: keyof QAFRow): boolean {
  if (group === 'alle') return true
  return QAF_COLUMN_GROUPS[group].has(col)
}

export function columnGroupOf(col: keyof QAFRow): Exclude<ColumnGroup, 'alle'> | null {
  if (QAF_COLUMN_GROUPS.material.has(col)) return 'material'
  if (QAF_COLUMN_GROUPS.fertigung.has(col)) return 'fertigung'
  if (QAF_COLUMN_GROUPS.sbm.has(col)) return 'sbm'
  return null
}
