// Re-export Prisma types for use across apps
export type {
  User,
  Session,
  Account,
  Organization,
  Member,
  UserRole,
  News,
  NewsRead,
  NewsAttachment,
  Stelle,
  Termin,
  TerminAnmeldung,
} from '@prisma/client'

// SQLite has no native enum support — define string union types manually.
// These mirror the valid values stored in the DB (enforced via Zod at the API layer).
export type Plan = 'pilot' | 'standard' | 'pro' | 'verband'
export type MemberStatus = 'aktiv' | 'ruhend' | 'ausgetreten'
export type OrgRole = 'admin' | 'member'
export type NewsKategorie = 'Wichtig' | 'Pruefung' | 'Foerderung' | 'Veranstaltung' | 'Allgemein'
export type TerminTyp = 'Pruefung' | 'Versammlung' | 'Kurs' | 'Event' | 'Sonstiges'

// =============================================
// UI Display Helpers
// =============================================

export const NEWS_KATEGORIE_LABELS: Record<string, string> = {
  Wichtig: 'Wichtig',
  Pruefung: 'Prüfung',
  Foerderung: 'Förderung',
  Veranstaltung: 'Veranstaltung',
  Allgemein: 'Allgemein',
}

export const TERMIN_TYP_LABELS: Record<string, string> = {
  Pruefung: 'Prüfung',
  Versammlung: 'Versammlung',
  Kurs: 'Kurs',
  Event: 'Event',
  Sonstiges: 'Sonstiges',
}

export const MEMBER_STATUS_LABELS: Record<string, string> = {
  aktiv: 'Aktiv',
  ruhend: 'Ruhend',
  ausgetreten: 'Ausgetreten',
}

export const PLAN_LABELS: Record<string, string> = {
  pilot: 'Pilot',
  standard: 'Standard',
  pro: 'Pro',
  verband: 'Verband',
}

// =============================================
// Shared Zod schemas (for validation on both apps)
// =============================================

export const SPARTEN = [
  'Elektrotechnik',
  'Informationstechnik',
  'Sanitär',
  'Heizung',
  'Klimatechnik',
  'Maler',
  'Schreiner',
  'Metallbau',
  'Sonstiges',
] as const

export type Sparte = (typeof SPARTEN)[number]
