import { useMutation, useQuery, useQueryClient } from '@tanstack/react-query';
import { deleteClientDocument, getClientDocument, updateClientDoc, uploadClientDoc } from '@/lib/dashboard/dashboard-api';

export interface UploadClientDocumentPayload {
  file: File;
  client_id: number;
  type: string;
  doc_type: string;
  upload_as: string;
  catid: number;
  is_active?: number;
  description?: string;
}
export interface UpdateClientDocumentPayload {
  documentId: number;
  file?: File;
  client_id: number;
  type?: string;
  doc_type: string;
  upload_as: string;
  catid?: number;
  is_active?: number;
  description?: string;
}

export const useAllClientDocument = (
  customerId: string | number,
  pageNum: number
) => {
  return useQuery({
    queryKey: ['client-alearts', customerId, pageNum],
    queryFn: async () => {
      const res = await getClientDocument(customerId, pageNum);
      return res;
    },
    enabled: !!customerId, // ✅ THIS IS THE KEY
    staleTime: 1000 * 60 * 5,
  });
};

// remove document
export const useRemoveClientDocument = () => {
  const queryClient = useQueryClient();

  return useMutation({
    mutationFn: async (id: number) => {
      await deleteClientDocument(id);
    },
    onSuccess: (_,) => {
      // invalidate document list
      queryClient.invalidateQueries({
        queryKey: ['client-alearts'],
      });
    },
  });
};

// Upload document
export const useUploadClientDocument = () => {
  const queryClient = useQueryClient();

  return useMutation({
    mutationFn: uploadClientDoc,
    onSuccess: () => {
      queryClient.invalidateQueries({
        queryKey: ['client-alearts'],
      });
    },
  });
};

// update document
export const useUpdateClientDocument = () => {
  const queryClient = useQueryClient();

  return useMutation({
    mutationFn: updateClientDoc,
    onSuccess: () => {
      queryClient.invalidateQueries({
        queryKey: ['client-alearts'],
      });
    },
  });
};
