import { useState } from "react"; import { Pencil, Trash2 } from "lucide-react"; import OmsorgCard from "../../components/OmsorgCard"; import OmsorgButton from "../../components/ui/OmsorgButton"; import { useAuth } from "../../app/AuthContext"; import EditFacilityDialog from "./EditFacilityDialog"; import FacilityContactsList from "./FacilityContactsList"; import FacilityQualificationRatesList from "./FacilityQualificationRatesList"; function formatFollowUpDueDate(followUpDueDate) { if (!followUpDueDate) { return "—"; } return new Date(followUpDueDate).toLocaleDateString("de-DE"); } function formatAddress(street, postalCode, city, country) { const line = [postalCode, city].filter(Boolean).join(" "); const parts = [street, line].filter(Boolean); if (country && country !== "Deutschland") { parts.push(country); } return parts.length > 0 ? parts.join(", ") : "—"; } export default function FacilityDetailPanel({ facility, onUpdated }) { const { hasPermission } = useAuth(); const canEdit = hasPermission("Facilities", "Edit"); const canDelete = hasPermission("Facilities", "Delete"); const [isEditDialogOpen, setIsEditDialogOpen] = useState(false); const [isDeleting, setIsDeleting] = useState(false); async function handleDelete() { if (!window.confirm(`${facility.name} wirklich löschen?`)) { return; } setIsDeleting(true); const result = await window.omsorg.facilities.delete(facility.id); setIsDeleting(false); if (result.ok) { onUpdated?.(null); } } if (!facility) { return (

Keine Einrichtung ausgewählt

Wähle links eine Einrichtung aus.

); } return (

{facility.name}

{facility.crmStatus}
{canEdit && ( setIsEditDialogOpen(true)}> Bearbeiten )} {canDelete && ( Löschen )}
Art der Einrichtung

{facility.facilityType ?? "—"}

Website

{facility.website ? ( {facility.website} ) : ( "—" )}

Adresse

{formatAddress(facility.street, facility.postalCode, facility.city, facility.country)}

Rechnungsadresse

{formatAddress( facility.billingStreet, facility.billingPostalCode, facility.billingCity, facility.billingCountry )}

{facility.followUpDueDate && (
Wiedervorlage fällig am

{formatFollowUpDueDate(facility.followUpDueDate)}

)}
Verrechnungssatz

{facility.billingRate != null ? `${facility.billingRate} EUR/Std.` : "—"}

Zuschläge

Nacht {facility.nightSurchargePercent ?? "—"}% · Sa {facility.saturdaySurchargePercent ?? "—"}% · So {facility.sundaySurchargePercent ?? "—"}% · Feiertag {facility.holidaySurchargePercent ?? "—"}%

Fahrtkosten

{facility.travelCostRate != null ? `${facility.travelCostRate} EUR (Pauschale je Einsatz)` : "—"}

Mindeststunden

{facility.minimumHours ?? "—"}

Pausenregelung

{facility.breakPolicy ?? "—"}

Abrechnungsintervall

{facility.billingInterval ?? "—"}

Zahlungsziel

{facility.paymentTermDays != null ? `${facility.paymentTermDays} Tage` : "—"}

Individuelle Vereinbarungen

{facility.individualAgreements ?? "—"}

{isEditDialogOpen && ( setIsEditDialogOpen(false)} onUpdated={(updatedFacility) => { setIsEditDialogOpen(false); onUpdated?.(updatedFacility); }} /> )}
); }