import { dienstwagenLabel } from "@/lib/dienstwagen"; import { fmtDate, fmtFullName } from "@/lib/format"; import { hayGradeLabel } from "@/lib/hay-grade"; import type { OpenPositionResolved } from "@/lib/positions"; import type { HireDraftData } from "./types"; type StepSummaryProps = { draft: HireDraftData; selectedPosition: OpenPositionResolved | null; locations: { id: string; name: string; country: string }[]; }; export function StepSummary({ draft, selectedPosition, locations }: StepSummaryProps) { const location = locations.find((l) => l.id === draft.locationId); const flags = [ draft.isBetriebsrat && "Betriebsrat", draft.hasDienstwagen && `Dienstwagen (${dienstwagenLabel(draft.dienstwagenArt)})`, draft.isLateraleFuehrung && "Laterale Führung", draft.isCLevel && "C-Level", draft.hasKuendigungsschutz && `Besonderer Kündigungsschutz${draft.kuendigungsschutzBis ? ` bis ${fmtDate(draft.kuendigungsschutzBis)}` : ""}`, ].filter(Boolean); const notfall = [draft.emergencyContactName, draft.emergencyContactRelation && `(${draft.emergencyContactRelation})`, draft.emergencyContactPhone] .filter(Boolean) .join(" "); const rows: [string, string][] = [ ["Personalnummer", draft.personnelNumber || "–"], ["Name", fmtFullName(draft.firstName, draft.lastName, draft.titlePrefix, draft.titleSuffix)], ["Geschlecht", draft.gender === "m" ? "männlich" : "weiblich"], ["Geburtsdatum", fmtDate(draft.birthDate)], ["SV-Nummer", draft.svNummer || "–"], ["E-Mail (privat)", draft.email || "–"], ["Telefon", draft.phone || "–"], ["Notfallkontakt", notfall || "–"], ["Standort", location ? `${location.name} (${location.country})` : "–"], ["Position", selectedPosition ? `${selectedPosition.title} (${selectedPosition.position_number})` : "–"], ["Organisationseinheit", selectedPosition?.orgLabel ?? "–"], ["Führungskraft", selectedPosition?.managerName ?? "–"], ["Besetzung", draft.besetzung], ["Eintrittsdatum", fmtDate(draft.entryDate)], ["Vertragsart", draft.contractType === "befristet" ? `befristet bis ${fmtDate(draft.contractEndDate)}` : "unbefristet"], ["Beschäftigungsausmaß", `${draft.employmentType} (${draft.weeklyHours} h)`], ["Hay-Grade", hayGradeLabel(draft.paygrade)], ["Beschäftigtengruppe", draft.workerType], ["Kollektivvertrag", draft.collectiveAgreement], ["Arbeitstage", draft.workDays.join(", ") || "–"], ["Merkmale", flags.length > 0 ? flags.join(", ") : "–"], ]; return (
{rows.map(([label, value]) => (
{label}
{value}
))}
); }