/**
 * Supported languages for communication or preference selection
 */
export enum Languages {
  ENGLISH = 'English',
  FRENCH = 'French',
  GERMAN = 'German',
  ITALIAN = 'Italian',
  SPANISH = 'Spanish',
  CHINESE = 'Chinese',
  JAPANISH = 'Japanese',
  KOREAN = 'Korean',
  RUSSIAN = 'Russian',
  TURKISH = 'Turkish',
  VIETNAMESE = 'Vietnamese',
}

/**
 * Education levels or academic grades
 */
export enum EducationGrades {
  PRIMARY_SCHOOL = 'Primary School',
  SECONDARY_SCHOOL = 'Secondary School',
  HIGH_SCHOOL = 'High School',
  UNDERGRADUATE = 'Undergraduate',
  GRADUATE = 'Graduate',
}

/**
 * Internal keys representing family relationships
 */
export enum RelationsKey {
  SELF = 'SELF',
  FATHER = 'FATHER',
  MOTHER = 'MOTHER',
  GRANDFATHER = 'GRANDFATHER',
  GRANDMOTHER = 'GRANDMOTHER',
  BROTHER = 'BROTHER',
  SISTER = 'SISTER',
  AUNT = 'AUNT',
  UNCLE = 'UNCLE',
  NEPHEW = 'NEPHEW',
  NIECE = 'NIECE',
}

/**
 * Human-readable relationship metadata
 * - `id` is typically used for database or API reference
 * - `title` is used for UI display
 */
export const Relationships: Record<
  RelationsKey,
  { id: string; title: string }
> = {
  [RelationsKey.SELF]: { id: '1', title: 'Self' },
  [RelationsKey.FATHER]: { id: '2', title: 'Father' },
  [RelationsKey.MOTHER]: { id: '3', title: 'Mother' },
  [RelationsKey.GRANDFATHER]: { id: '4', title: 'Grandfather' },
  [RelationsKey.GRANDMOTHER]: { id: '5', title: 'Grandmother' },
  [RelationsKey.BROTHER]: { id: '6', title: 'Brother' },
  [RelationsKey.SISTER]: { id: '7', title: 'Sister' },
  [RelationsKey.AUNT]: { id: '8', title: 'Aunt' },
  [RelationsKey.UNCLE]: { id: '9', title: 'Uncle' },
  [RelationsKey.NEPHEW]: { id: '10', title: 'Nephew' },
  [RelationsKey.NIECE]: { id: '11', title: 'Niece' },
};

/**
 * Internal keys representing marital status options
 */
export enum MaritalStatusKey {
  SINGLE = 'SINGLE',
  MARRIED = 'MARRIED',
  DIVORCED = 'DIVORCED',
  WIDOWED = 'WIDOWED',
}

/**
 * Human-readable marital status metadata
 * - `id` maps to persistent storage or legacy systems
 * - `title` is used for UI labels
 */
export const MaritalStatuses: Record<
  MaritalStatusKey,
  { id: string; title: string }
> = {
  [MaritalStatusKey.SINGLE]: { id: '1', title: 'Single' },
  [MaritalStatusKey.MARRIED]: { id: '2', title: 'Married' },
  [MaritalStatusKey.DIVORCED]: { id: '3', title: 'Divorced' },
  [MaritalStatusKey.WIDOWED]: { id: '4', title: 'Widowed' },
};

/**
 * Gender identifiers
 * - Stored as compact values for database efficiency
 */
export enum Genders {
  MALE = 'M',
  FEMALE = 'F',
  OTHER = 'O',
}
