"use client";

import { useTransition } from "react";
import { toast } from "sonner";
import { ConfirmButton } from "@/components/ui/confirm-button";
import { checkOut } from "@/actions/checkin";
import { formatMoney } from "@/lib/utils";
import { LogOut } from "lucide-react";

export function CheckOutButton({
  id,
  client,
  solde,
  devise,
}: {
  id: string;
  client: string;
  solde: number;
  devise: string;
}) {
  const [pending, startTransition] = useTransition();

  function handle() {
    return new Promise<void>((resolve) => {
      startTransition(async () => {
        const result = await checkOut(id);
        if (result?.error) toast.error(result.error);
        // En cas de succès, redirect vers la facture (gérée par l'action)
        resolve();
      });
    });
  }

  const description =
    solde > 0
      ? `Solde restant à régler : ${formatMoney(solde, devise)}. Une facture sera générée et la chambre passera en nettoyage.`
      : "Une facture sera générée et la chambre passera en nettoyage.";

  return (
    <ConfirmButton
      variant="accent"
      size="sm"
      title={`Effectuer le check-out de ${client} ?`}
      description={description}
      confirmLabel="Confirmer le départ"
      onConfirm={handle}
      disabled={pending}
    >
      <LogOut className="w-4 h-4" />
      Check-out
    </ConfirmButton>
  );
}
