"use client"; import { Trash2 } from "lucide-react"; import { useRouter } from "next/navigation"; import { useState } from "react"; import { deleteHistoryEntry } from "@/actions/employees"; import { Button } from "@/components/ui/Button"; import { Modal } from "@/components/ui/Modal"; import { useToast } from "@/components/ui/Toast"; import { fmtDate } from "@/lib/format"; import type { Vorschau } from "@/lib/history"; // Löschen mit Ansage. // // Bestätigen heisst hier nicht „Wirklich?" — das beantwortet jede Person nach // dem dritten Mal blind mit Ja. Der Dialog sagt stattdessen, **was danach // anders ist**: welches Feld auf welchen Wert zurückgeht, und welches nicht, // weil eine spätere Änderung es erneut angefasst hat. Wer das liest, merkt // selbst, ob er den richtigen Eintrag erwischt hat. export function HistorieLoeschen({ historyId, employeeId, bezeichnung, datum, vorschau, istZukunft, }: { historyId: string; employeeId: string; bezeichnung: string; datum: string; vorschau: Vorschau[]; /** Noch nicht wirksam — dann wird der geplante Vorgang entschärft. */ istZukunft: boolean; }) { const [offen, setOffen] = useState(false); const [laeuft, setLaeuft] = useState(false); const { showToast } = useToast(); const router = useRouter(); const zurueck = vorschau.filter((v) => !v.bleibt); const bleibt = vorschau.filter((v) => v.bleibt); // Eine geplante Abwesenheit oder Rückkehr hat keine einzelnen Felder, die // sich herausnehmen liessen — sie fällt als Ganzes. Dann ist „Löschen und // zurücksetzen" das falsche Wort für das, was der Knopf tut. const ganzerVorgang = istZukunft && vorschau.length === 0; async function loeschen() { setLaeuft(true); const ergebnis = await deleteHistoryEntry({ history_id: historyId, employee_id: employeeId }); setLaeuft(false); if (ergebnis.success) { showToast("Eintrag gelöscht."); setOffen(false); router.refresh(); } else { showToast(ergebnis.error ?? "Löschen fehlgeschlagen.", "error"); } } return ( <> setOffen(false)} title={ganzerVorgang ? "Geplanten Vorgang abbrechen" : "Eintrag löschen"} footer={ <> } >

{bezeichnung} {istZukunft ? "zum" : "vom"} {fmtDate(datum)} wird aus der Historie entfernt.

{ganzerVorgang && (

Wird nicht mehr passieren

Der Vorgang entfällt ganz — die {bezeichnung} zum {fmtDate(datum)} findet nicht statt. Am Stammsatz wird das vorgemerkte Datum mit entfernt.

An den heutigen Stammdaten ändert sich nichts: der Vorgang war noch nicht wirksam.

)} {istZukunft && vorschau.length > 0 && (

Wird nicht mehr passieren

An den Stammdaten ändert sich nichts — die Änderung war noch nicht wirksam. Betrifft der geplante Vorgang noch weitere Felder, läuft er mit diesen weiter.

)} {!istZukunft && zurueck.length > 0 && (

Wird zurückgesetzt

)} {!istZukunft && bleibt.length > 0 && (

Bleibt unverändert

)}

Der Vorgang wird im Protokoll festgehalten — mit Zeitpunkt, Person und den Werten der gelöschten Zeile. Die Zeile selbst lässt sich nicht wiederherstellen.

); }