import { Paper, Text, Box, Stack, Group } from '@pikku/mantine/core'; import { GetCandidateResult } from '@heygermany/sdk'; import React from 'react'; import { asI18n, type I18nNode } from '@pikku/react'; const renderFieldValue = (value: any, key: string): I18nNode => { let displayValue: string; if (typeof value === 'boolean') { displayValue = value ? 'Yes' : 'No'; } else if (value === null || value === undefined) { displayValue = 'N/A'; } else if (key === 'languageLevel') { displayValue = (value as string).replace(/_/g, ' ').toLowerCase().replace(/\b\w/g, l => l.toUpperCase()); } else if (key === 'qualificationStatusHomeCountry') { displayValue = (value as string).replace(/_/g, ' ').toLowerCase().replace(/\b\w/g, l => l.toUpperCase()); } else if (key === 'qualificationStatusGermany') { displayValue = (value as string).replace(/_/g, ' ').toLowerCase().replace(/\b\w/g, l => l.toUpperCase()); } else if (key === 'languageAssessmentType') { displayValue = value === 'certificate' ? 'Certificate' : value === 'self_assessment' ? 'Self Assessment' : 'N/A'; } else { displayValue = String(value); } const getColor = (val: string) => { if (val === 'Verified') return 'green'; if (val === 'Unverified') return 'yellow'; if (val === 'Missing') return 'red'; if (val === 'Yes') return 'green'; if (val === 'No') return 'red'; if (val === 'N/A') return 'dimmed'; return undefined; }; return {asI18n(displayValue)}; }; const renderRow = (label: string, value: I18nNode) => ( {asI18n(label)} {value} ); export const QualificationAssessment: React.FunctionComponent<{ candidateResult?: GetCandidateResult }> = ({ candidateResult }) => { if (!candidateResult) return null; return ( <> {renderRow('Qualification Status Home Country:', renderFieldValue(candidateResult.qualificationStatusHomeCountry, 'qualificationStatusHomeCountry'))} {renderRow('Qualification Status Germany:', renderFieldValue(candidateResult.qualificationStatusGermany, 'qualificationStatusGermany'))} {renderRow('Nursing Related Degree:', renderFieldValue(candidateResult.nursingRelatedDegree, 'nursingRelatedDegree'))} {renderRow('Accredited University:', renderFieldValue(candidateResult.accreditedUniversity, 'accreditedUniversity'))} {renderRow('Accredited Study Program:', renderFieldValue(candidateResult.accreditedStudyProgram, 'accreditedStudyProgram'))} {renderRow('Structured Training:', renderFieldValue(candidateResult.structuredTraining?.overallStatus, 'structuredTraining'))} {renderRow('Duration:', renderFieldValue(candidateResult.structuredTraining?.hasDuration, 'hasDuration'))} {renderRow('Nursing Focus:', renderFieldValue(candidateResult.structuredTraining?.isNursingFocus, 'isNursingFocus'))} {renderRow('Theory & Practice:', renderFieldValue( candidateResult.structuredTraining?.hasTheoryHours && candidateResult.structuredTraining?.hasPracticeHours, 'theoryAndPractice' ))} {renderRow('License:', null)} {renderRow('Mandatory:', renderFieldValue(candidateResult.licenseMandatory, 'licenseMandatory'))} {renderRow('Uploaded:', renderFieldValue(candidateResult.docs?.license, 'licenseUploaded'))} {renderRow('Language:', null)} {renderRow('Level:', renderFieldValue(candidateResult.languageLevel, 'languageLevel'))} {renderRow('Assessment Type:', renderFieldValue(candidateResult.languageAssessmentType, 'languageAssessmentType'))} {renderRow('CV Uploaded:', renderFieldValue(candidateResult.docs?.cv, 'cvUploaded'))} ); }