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'))}
>
);
}