"use client"; import { Pencil, Plus, Trash2 } from "lucide-react"; import { useRouter } from "next/navigation"; import { useState } from "react"; import { changeEmployeeData } from "@/actions/employees"; import { Button } from "@/components/ui/Button"; import { useToast } from "@/components/ui/Toast"; import { todayIso } from "@/lib/format"; import { NotfallkontaktModal, type Notfallkontakt } from "./NotfallkontaktModal"; // Eigener Abschnitt statt einer Zelle im Raster, und unterhalb der // Angehörigen: beides sind Personen im Umfeld, und der Notfallkontakt ist die // Ausnahme davon — deshalb steht er zuletzt, nicht dazwischen. Im Ernstfall // greift jemand in Eile danach; dann muss die Nummer sofort zu finden sein // und wählbar. // // Der Knopf steht hier, weil er bei den Angehörigen darüber auch steht. Ohne // ihn führte der einzige Weg über „Daten ändern" — ein Formular über alle // Stammdaten, um eine Telefonnummer einzutragen. export function NotfallkontaktSection({ employeeId, kontakt, effectiveDate, }: { employeeId: string; kontakt: Notfallkontakt; /** * Nur, wenn der Abschnitt in „Daten ändern" steht: dann treibt dessen * „Wirksam ab" auch diesen Vorgang — wie bei den Angehörigen darüber. * Ohne Angabe gilt heute. */ effectiveDate?: string; }) { const { showToast } = useToast(); const router = useRouter(); const [modalOpen, setModalOpen] = useState(false); const [entfernt, setEntfernt] = useState(false); const stichtag = effectiveDate || todayIso(); const vorhanden = Boolean(kontakt.name); async function handleEntfernen() { setEntfernt(true); // Leere Zeichenketten, nicht ausgelassene Felder: die Datenbank macht // daraus null. Würden die Schlüssel fehlen, bliebe der Kontakt stehen. const result = await changeEmployeeData({ employee_id: employeeId, effective_date: stichtag, person: { emergency_contact_name: "", emergency_contact_phone: "", emergency_contact_relation: "" }, contract: {}, role: {}, }); setEntfernt(false); if (result.success) { showToast("Notfallkontakt entfernt."); router.refresh(); } else { showToast(result.error ?? "Fehler beim Entfernen.", "error"); } } return (

Notfallkontakt

{/* Nur, solange keiner hinterlegt ist: es gibt genau einen. Ein zweites „Hinzufügen" daneben verspräche eine Liste, die es hier nicht gibt — geändert und entfernt wird in der Zeile selbst. */} {!vorhanden && ( )}
{/* Dieselbe Tabelle wie bei den Angehörigen darüber, Zeile für Zeile derselbe Aufbau. Vorher stand hier eine Beschreibungsliste — fachlich dasselbe, optisch ein zweiter Baustil im selben Reiter. Zwei Listen von Personen im Umfeld sollen gleich aussehen. */} {vorhanden ? (
Name Telefon Verhältnis
{kontakt.name} {kontakt.telefon ? ( // Wählbar: im Ernstfall greift jemand in Eile danach. {kontakt.telefon} ) : ( "–" )} {kontakt.verhaeltnis || "–"}
) : (

Kein Notfallkontakt hinterlegt.

)} {/* `key` setzt die Felder auf den gespeicherten Stand zurück, sobald sich der Kontakt geändert hat — das Fenster bleibt sonst montiert und zeigte beim zweiten Öffnen den alten Entwurf. */} setModalOpen(false)} employeeId={employeeId} kontakt={kontakt} effectiveDate={stichtag} />
); }