"use client"; import { useRouter } from "next/navigation"; import { useState } from "react"; import { terminateEmployee } from "@/actions/employees"; import { SlideOver } from "@/components/ui/SlideOver"; import { useToast } from "@/components/ui/Toast"; import type { Database } from "@/lib/supabase/types"; type EmployeeRow = Database["public"]["Tables"]["employees"]["Row"]; const EXIT_REASONS = ["Einvernehmliche Auflösung", "Kündigung AN", "Kündigung AG", "Befristungsablauf", "Pensionierung", "Entlassung"]; const CHECKLIST_ITEMS = ["IT-Zugänge deaktivieren", "Hardware retournieren", "ÖGK-Abmeldung", "Endabrechnung & Dienstzeugnis"]; type TerminatePanelProps = { open: boolean; onClose: () => void; employee: EmployeeRow; directReportCount: number; }; export function TerminatePanel({ open, onClose, employee, directReportCount }: TerminatePanelProps) { const { showToast } = useToast(); const router = useRouter(); const [exitDate, setExitDate] = useState(""); const [reason, setReason] = useState(EXIT_REASONS[0]); const [note, setNote] = useState(""); const [checked, setChecked] = useState(CHECKLIST_ITEMS.map(() => false)); const [pending, setPending] = useState(false); async function handleSubmit() { if (!exitDate) { showToast("Bitte ein Austrittsdatum angeben.", "error"); return; } setPending(true); const result = await terminateEmployee({ employee_id: employee.id, exit_date: exitDate, exit_reason: reason, note }); setPending(false); if (result.success) { showToast(`Austritt für ${employee.first_name} ${employee.last_name} erfasst.`); router.refresh(); onClose(); } else { showToast(result.error ?? "Fehler beim Speichern.", "error"); } } return ( } >
{directReportCount > 0 && (
{directReportCount} direkte Berichte werden automatisch der nächsthöheren Führungskraft zugeordnet.
)}
setExitDate(e.target.value)} className="w-full rounded border border-border px-3 py-2 text-sm" />