import { fetchWithAuth } from '../fetchWithAuth'; const API_URL = import.meta.env.VITE_EFC_API_URL; /** * Función auxiliar para descargas individuales * @param {string} id - ID del documento * @param {string} filename - Nombre del archivo (opcional) * @param {function} showMessage - Función para mostrar mensajes */ export const downloadFile = async (id, filename = 'archivo', showMessage) => { try { const res = await fetchWithAuth(`${API_URL}/record/documents/descargar/${id}/`); if (!res.ok) { showMessage('Error en la descarga del archivo', 'error'); return; } const blob = await res.blob(); const url = window.URL.createObjectURL(blob); const a = document.createElement('a'); a.href = url; a.download = filename; document.body.appendChild(a); a.click(); a.remove(); window.URL.revokeObjectURL(url); } catch (error) { console.error('Error downloading file:', error); if (error.message === 'SESSION_EXPIRED') { showMessage('Tu sesión ha expirado, por favor inicia sesión de nuevo.', 'error'); } else { showMessage('Error al descargar el archivo', 'error'); } } }; /** * Función auxiliar para descargas masivas en ZIP * @param {array} ids - Array de IDs de documentos * @param {function} showMessage - Función para mostrar mensajes * @param {string} pedimentoName - Nombre del pedimento para el archivo ZIP (opcional) */ export const downloadBulkZip = async (ids, showMessage, pedimentoName) => { try { const response = await fetchWithAuth(`${API_URL}/record/documents/bulk-download/`, { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ document_ids: ids }) }); if (!response.ok) throw new Error('Error en la descarga'); const blob = await response.blob(); const url = window.URL.createObjectURL(blob); const a = document.createElement('a'); a.href = url; a.download = `documentos_${pedimentoName || 'pedimento'}.zip`; document.body.appendChild(a); a.click(); window.URL.revokeObjectURL(url); document.body.removeChild(a); showMessage('Descarga iniciada exitosamente', 'success'); } catch (error) { showMessage('Error en la descarga: ' + error.message, 'error'); } };