"use client";

import { useState, useTransition } from "react";
import { useRouter } from "next/navigation";
import { adminDeleteClientAction } from "@/lib/actions/clientAccounts";
import { formatDateDE } from "@/lib/orderConstants";

export function DeleteClientPanel({
  clientId,
  clientName,
  hasInvoices,
  deletionRequestedAt,
}: {
  clientId: string;
  clientName: string;
  hasInvoices: boolean;
  deletionRequestedAt: string | null;
}) {
  const [pending, startTransition] = useTransition();
  const [error, setError] = useState<string | null>(null);
  const router = useRouter();

  function handleDelete() {
    const confirmMsg = hasInvoices
      ? `„${clientName}" hat bereits Rechnungen und kann daher aus rechtlichen Gründen nicht komplett gelöscht werden. Stattdessen werden alle persönlichen Daten (Name, Adresse, Geburtsdatum, Passwort) überschrieben. Fortfahren?`
      : `„${clientName}" wirklich vollständig löschen? Alle Aufträge, Fotos-Zuordnungen und Verträge werden mit entfernt. Das kann nicht rückgängig gemacht werden.`;
    if (!confirm(confirmMsg)) return;

    setError(null);
    startTransition(async () => {
      const result = await adminDeleteClientAction(clientId);
      if (result.error) {
        setError(result.error);
        return;
      }
      if (result.deleted) {
        router.push("/de/admin/clients");
      } else {
        router.refresh();
      }
    });
  }

  return (
    <div className="border border-red-500/25 rounded-2xl p-5 mb-8 flex flex-col gap-2">
      <p className="text-xs uppercase tracking-[0.1em] text-red-400/80">Kunde löschen</p>
      {deletionRequestedAt && (
        <p className="text-xs text-amber-400">
          Löschung vom Kunden selbst beantragt am {formatDateDE(new Date(deletionRequestedAt))}.
        </p>
      )}
      <p className="text-xs text-[var(--rk-ink-muted)]">
        {hasInvoices
          ? "Wegen vorhandener Rechnungen (Aufbewahrungspflicht) wird das Konto beim Löschen anonymisiert statt entfernt."
          : "Keine Rechnungen vorhanden — das Konto kann vollständig gelöscht werden."}
      </p>
      {error && <p className="text-sm text-red-400">{error}</p>}
      <button
        type="button"
        disabled={pending}
        onClick={handleDelete}
        className="self-start text-xs border border-red-500/40 text-red-400 rounded-lg px-4 py-2 uppercase tracking-[0.15em] hover:border-red-400 hover:bg-red-500/10 disabled:opacity-50 transition-colors"
      >
        {pending ? "…" : hasInvoices ? "Kunde anonymisieren" : "Kunde löschen"}
      </button>
    </div>
  );
}
