
import { fetchWithAuth } from '../fetchWithAuth';

export interface Document {
  id: string;
  organizacion: string;
  pedimento: string;
  archivo: string;
  document_type: number;
  size: number;
  extension: string;
  created_at: string;
  updated_at: string;
}

export interface DocumentsResponse {
  count: number;
  next: string | null;
  previous: string | null;
  results: Document[];
}

const API_URL = import.meta.env.VITE_EFC_API_URL;
// Obtiene la lista de documentos (pedimentos)
export interface PedimentosFilters {
  search?: string;
  id?: string;
  documentos_count?: number;
  documentos_peso_total?: number;
  pedimento?: string;
  pedimento_app?: string;
  patente?: string;
  aduana?: string;
  regimen?: string;
  clave_pedimento?: string;
  fecha_inicio?: string;
  fecha_fin?: string;
  fecha_pago?: string;
  alerta?: string | boolean;
  agente_aduanal?: string;
  curp_apoderado?: string;
  importe_total?: string;
  saldo_disponible?: string;
  importe_pedimento?: string;
  existe_expediente?: string | boolean;
  remesas?: string | boolean;
  numero_partidas?: number;
  numero_operacion?: string;
  created_at?: string;
  updated_at?: string;
  organizacion?: string;
  tipo_operacion?: string | number;
  contribuyente?: string;
  numero_edocs?: number;
  numero_coves?: number;
}

export async function fetchDocuments(
  page: number = 1,
  pageSize: number = 10,
  filters: PedimentosFilters = {}
): Promise<DocumentsResponse> {
  const params = new URLSearchParams();
  params.append('page', String(page));
  params.append('page_size', String(pageSize));
  Object.entries(filters).forEach(([key, value]) => {
    if (value !== undefined && value !== null && value !== '') {
      params.append(key, String(value));
    }
  });
  
  const res = await fetchWithAuth(`${API_URL}/customs/pedimentos/?${params.toString()}`);
  if (!res.ok) throw new Error('No autorizado o error en la petición');
  return res.json();
}
// Obtiene los documentos por id de pedimento
export async function fetchDocumentById(id: string): Promise<DocumentsResponse> {
  const res = await fetchWithAuth(`${API_URL}/record/documents/?page=1&page_size=10&pedimento=${id}/`);
  if (!res.ok) throw new Error('No autorizado o error en la petición');
  return res.json();
}
