import type {
  ApplicantStatus,
  CandidateDocumentType,
  DocumentStatus,
  GermanState,
  LanguageCode,
  LanguageLevel,
  NurseRecognitionGermany,
  NurseRecognitionHomeCountry,
  ProfessionalRecognitionStatus,
  RecognitionDossierDocumentCategory,
  RecognitionDossierStatus,
  RecognitionLikelihood,
  UserRole,
  UserType,
} from './db.js'

export const UserRoles = {
  ADMIN: 'admin',
  OWNER: 'owner',
} as const satisfies Record<string, UserRole>

export const UserTypes = {
  COMPANY: 'company',
  BACKOFFICE: 'backoffice',
  CANDIDATE: 'candidate',
} as const satisfies Record<string, UserType>

export const LanguageLevels = {
  NONE: 'NONE',
  A_ONE: 'A_ONE',
  A_TWO: 'A_TWO',
  B_ONE: 'B_ONE',
  B_TWO: 'B_TWO',
  C_ONE: 'C_ONE',
  C_TWO: 'C_TWO',
} as const satisfies Record<string, LanguageLevel>

export const CandidateDocumentTypes = {
  EDUCATION: 'education',
  LICENSE: 'license',
  LANGUAGE: 'language',
  WORK_EXPERIENCE: 'work_experience',
  PROFILE_IMAGE: 'profile_image',
} as const satisfies Record<string, CandidateDocumentType>

export const DocumentStatuses = {
  MISSING: 'Missing',
  INVALID: 'Invalid',
  VERIFIED: 'Verified',
  UNVERIFIED: 'Unverified',
} as const satisfies Record<string, DocumentStatus>

export const ApplicantStatuses = {
  INITIAL: 'Initial',
  INVALID: 'Invalid',
  PENDING: 'Pending',
  COMPLETE: 'Complete',
  FAILED: 'Failed',
} as const satisfies Record<string, ApplicantStatus>

export const NurseRecognitionGermanyValues = {
  NURSE: 'nurse',
  ASSISTANT_NURSE: 'assistant_nurse',
  NURSING_HELPER: 'nursing_helper',
} as const satisfies Record<string, NurseRecognitionGermany>

export const NurseRecognitionHomeCountryValues = {
  NURSE: 'nurse',
  ASSISTANT_NURSE: 'assistant_nurse',
  NURSING_HELPER: 'nursing_helper',
  NONE: 'none',
} as const satisfies Record<string, NurseRecognitionHomeCountry>

export const RecognitionLikelihoodValues = {
  LOW: 'low',
  MEDIUM: 'medium',
  HIGH: 'high',
} as const satisfies Record<string, RecognitionLikelihood>

export const ProfessionalRecognitionStatuses = {
  NOT_STARTED: 'NOT_STARTED',
  IN_PROGRESS: 'IN_PROGRESS',
  COMPLETED: 'COMPLETED',
} as const satisfies Record<string, ProfessionalRecognitionStatus>

export const GermanStates: Record<GermanState, GermanState> = {
  'Baden-Württemberg': 'Baden-Württemberg',
  Bayern: 'Bayern',
  Berlin: 'Berlin',
  Brandenburg: 'Brandenburg',
  Bremen: 'Bremen',
  Hamburg: 'Hamburg',
  Hessen: 'Hessen',
  'Mecklenburg-Vorpommern': 'Mecklenburg-Vorpommern',
  Niedersachsen: 'Niedersachsen',
  'Nordrhein-Westfalen': 'Nordrhein-Westfalen',
  'Rheinland-Pfalz': 'Rheinland-Pfalz',
  Saarland: 'Saarland',
  Sachsen: 'Sachsen',
  'Sachsen-Anhalt': 'Sachsen-Anhalt',
  'Schleswig-Holstein': 'Schleswig-Holstein',
  Thüringen: 'Thüringen',
}

export const LanguageCodes: Record<Uppercase<LanguageCode>, LanguageCode> = {
  EN: 'en',
  AR: 'ar',
  BS: 'bs',
  FIL: 'fil',
  HI: 'hi',
  ES: 'es',
  TR: 'tr',
  UK: 'uk',
  VI: 'vi',
}

export const RecognitionDossierStatuses = {
  DRAFT: 'draft',
  BLOCKED: 'blocked',
  READY: 'ready',
  GENERATING: 'generating',
  GENERATED: 'generated',
  UNSUPPORTED: 'unsupported',
  FAILED: 'failed',
} as const satisfies Record<string, RecognitionDossierStatus>

export const RecognitionDossierDocumentCategories = {
  PASSPORT: 'passport',
  BIRTH_CERTIFICATE: 'birth_certificate',
  NAME_CHANGE_PROOF: 'name_change_proof',
  EMPLOYER_INTENT: 'employer_intent',
  MEDICAL_CERTIFICATE: 'medical_certificate',
  POLICE_CLEARANCE: 'police_clearance',
  TRANSLATION: 'translation',
  AUTHORITY_FORM: 'authority_form',
  POWER_OF_ATTORNEY: 'power_of_attorney',
  WAIVER_FORM: 'waiver_form',
  OTHER: 'other',
} as const satisfies Record<string, RecognitionDossierDocumentCategory>

export const PilotGermanStates = [
  GermanStates.Bayern,
  GermanStates.Hessen,
  GermanStates.Niedersachsen,
  GermanStates['Baden-Württemberg'],
  GermanStates['Nordrhein-Westfalen'],
  GermanStates.Berlin,
] as const
