import { useMutation, useQueryClient } from '@tanstack/react-query';
import { api } from '../lib/api';

interface InvoicePayload { uuid: string; status: string }

/**
 * صدور فاکتور یک مراجعه: ساخت idempotent (`POST /billing/invoices`) و سپس
 * نهایی‌سازی draft. خروجی mutation، uuid فاکتور است تا caller مودال «خلاصه
 * فاکتور» را باز کند. با recordUuid، لیست sessions همان بیمار invalidate
 * می‌شود تا invoice_uuid کارت‌ها به‌روز شود.
 */
export function useIssueInvoice(recordUuid?: string) {
  const qc = useQueryClient();

  return useMutation({
    mutationFn: async (sessionUuid: string): Promise<string> => {
      const res = await api.post<any>('/api/v1/billing/invoices', { session_uuid: sessionUuid });
      const invoice = ((res as any)?.data?.data ?? (res as any)?.data) as InvoicePayload;
      if (invoice.status === 'draft') {
        await api.post(`/api/v1/billing/invoices/${invoice.uuid}/finalize`, {});
      }
      return invoice.uuid;
    },
    onSuccess: () => {
      if (recordUuid) qc.invalidateQueries({ queryKey: ['patient-sessions', recordUuid] });
      qc.invalidateQueries({ queryKey: ['invoice'] });
    },
  });
}
