"use client";

import { useTransition } from "react";
import { useRouter } from "next/navigation";
import { setCompensationTypeAction, switchCompensationTypeAction } from "@/lib/actions/admin";

// Bewusst prominent oben auf der Auftragsseite statt versteckt im Vertrag-
// Bereich weiter unten. Funktioniert in beide Richtungen, auch nachdem
// bereits ein Vertrag existiert — dann löscht der Wechsel den bestehenden
// Vertrag automatisch mit (mit deutlicherer Warnung, falls schon
// unterschrieben), statt den Wechsel einfach zu verweigern.
export function CompensationTypeToggle({
  orderId,
  compensationType,
  contract,
  canEdit,
}: {
  orderId: string;
  compensationType: "paid" | "tfp";
  contract: { id: string; status: "draft" | "sent" | "signed" | "declined" } | null;
  canEdit: boolean;
}) {
  const [pending, startTransition] = useTransition();
  const router = useRouter();

  if (!canEdit) return null;

  const nextType = compensationType === "tfp" ? "paid" : "tfp";
  const label = compensationType === "tfp" ? "Auf Kostenpflichtig umstellen" : "Als TFP markieren";

  function handleClick() {
    if (!contract) {
      startTransition(async () => {
        await setCompensationTypeAction(orderId, nextType);
        router.refresh();
      });
      return;
    }

    const message =
      contract.status === "signed"
        ? "Für diesen Auftrag existiert bereits ein vom Kunden unterschriebener Vertrag. Beim Umstellen wird dieser Vertrag gelöscht (Unterschrift geht verloren) und danach kann ein neuer, passender Vertrag erstellt werden. Fortfahren?"
        : contract.status === "sent"
          ? "Für diesen Auftrag wurde bereits ein Vertrag an den Kunden verschickt (noch nicht unterschrieben). Beim Umstellen wird dieser Vertrag gelöscht und danach kann ein neuer, passender Vertrag erstellt werden. Fortfahren?"
          : "Für diesen Auftrag existiert bereits ein Vertragsentwurf. Beim Umstellen wird dieser gelöscht und danach kann ein neuer, passender Vertrag erstellt werden. Fortfahren?";
    if (!confirm(message)) return;

    startTransition(async () => {
      await switchCompensationTypeAction(orderId, nextType);
      router.refresh();
    });
  }

  return (
    <button
      type="button"
      disabled={pending}
      onClick={handleClick}
      className="text-[0.65rem] uppercase tracking-[0.08em] border border-white/15 rounded-full px-2.5 py-1 hover:border-white/40 disabled:opacity-50 transition-colors"
    >
      {label}
    </button>
  );
}
