import { useEffect, useState } from "react"; import { Pencil } from "lucide-react"; import OmsorgCard from "../../components/OmsorgCard"; import OmsorgBadge from "../../components/ui/OmsorgBadge"; import OmsorgButton from "../../components/ui/OmsorgButton"; import { useAuth } from "../../app/AuthContext"; import EmployeeTabs from "./EmployeeTabs"; import EditEmployeeDialog from "./EditEmployeeDialog"; function getInitials(firstName = "", lastName = "") { return `${firstName[0] ?? ""}${lastName[0] ?? ""}`.toUpperCase(); } function formatDate(value) { if (!value) return "—"; return new Date(value).toLocaleDateString("de-DE"); } function formatAddress(employee) { const line = [employee.postalCode, employee.city].filter(Boolean).join(" "); const parts = [employee.street, line].filter(Boolean); if (employee.country && employee.country !== "Deutschland") { parts.push(employee.country); } return parts.length > 0 ? parts.join(", ") : "—"; } export default function EmployeeDetailPanel({ employee, onUpdated }) { const { hasPermission } = useAuth(); const canEdit = hasPermission("Employees", "Edit"); const [activeTab, setActiveTab] = useState("overview"); const [isEditDialogOpen, setIsEditDialogOpen] = useState(false); useEffect(() => { setActiveTab("overview"); }, [employee?.id]); if (!employee) { return (

Keine Personalakte ausgewählt

Wähle links einen Mitarbeiter aus.

); } const renderTabContent = () => { switch (activeTab) { case "documents": return (

Dokumente

Hier werden später Arbeitsverträge, Nachweise und weitere Dokumente angezeigt.

); case "contracts": return (

Verträge

Hier erscheint später der Arbeitsvertrag mit Beginn, Ende und Konditionen.

); case "qualifications": return (

Qualifikationen

Hier erscheinen später Ausbildung, Zertifikate und Fortbildungen.

); case "assignments": return (

Einsätze

Hier wird später die komplette Einsatzhistorie angezeigt.

); case "overview": default: return (
Telefon

{employee.phoneNumber ?? "—"}

E-Mail

{employee.email ?? "—"}

Adresse

{formatAddress(employee)}

Geburtsdatum

{formatDate(employee.dateOfBirth)}

Eintritt

{formatDate(employee.entryDate)}

Austritt

{formatDate(employee.exitDate)}

Beschäftigungsart

{employee.employmentType ?? "—"}

Qualifikation

{employee.qualification ?? "—"}

Notfallkontakt

{employee.emergencyContactName ? `${employee.emergencyContactName}${ employee.emergencyContactRelation ? ` (${employee.emergencyContactRelation})` : "" }${employee.emergencyContactPhone ? ` — ${employee.emergencyContactPhone}` : ""}` : "—"}

); } }; return (
{getInitials(employee.firstName, employee.lastName)}

{`${employee.firstName} ${employee.lastName}`.trim()}

{canEdit && ( setIsEditDialogOpen(true)}> Bearbeiten )}
{renderTabContent()}
{isEditDialogOpen && ( setIsEditDialogOpen(false)} onUpdated={(updatedEmployee) => { setIsEditDialogOpen(false); onUpdated?.(updatedEmployee); }} /> )}
); }