Files
HoruxDespachos/apps/web/lib/api/documentos.ts
2026-04-27 22:09:36 -06:00

91 lines
3.2 KiB
TypeScript

import { apiClient } from './client';
import type { OpinionCumplimiento } from '@horux/shared';
export async function getOpiniones(contribuyenteId?: string): Promise<OpinionCumplimiento[]> {
const params = contribuyenteId ? `?contribuyenteId=${encodeURIComponent(contribuyenteId)}` : '';
const { data } = await apiClient.get(`/documentos/opiniones${params}`);
return data;
}
export async function descargarOpinionPdf(id: number): Promise<Blob> {
const { data } = await apiClient.get(`/documentos/opiniones/${id}/pdf`, {
responseType: 'blob',
});
return data;
}
export async function consultarOpinion(contribuyenteId?: string): Promise<OpinionCumplimiento> {
const params = contribuyenteId ? `?contribuyenteId=${encodeURIComponent(contribuyenteId)}` : '';
const { data } = await apiClient.post(`/documentos/opiniones/consultar${params}`);
return data;
}
export async function consultarConstancia(contribuyenteId?: string): Promise<any> {
const params = contribuyenteId ? `?contribuyenteId=${encodeURIComponent(contribuyenteId)}` : '';
const { data } = await apiClient.post(`/documentos/constancia/consultar${params}`);
return data;
}
// ──────────────────────────────────────────────────────────────────
// Documentos Extras — PDFs libres (acuses, contratos, poderes, etc.)
// ──────────────────────────────────────────────────────────────────
export interface DocumentoExtra {
id: number;
contribuyenteId: string | null;
nombre: string;
descripcion: string | null;
categoria: string | null;
pdfFilename: string;
subidoPor: string | null;
createdAt: string;
}
export interface CreateExtraInput {
nombre: string;
descripcion?: string;
categoria?: string;
pdfBase64: string;
pdfFilename: string;
}
export async function listarExtras(
contribuyenteId?: string | null,
categoria?: string | null,
): Promise<DocumentoExtra[]> {
const params = new URLSearchParams();
if (contribuyenteId) params.set('contribuyenteId', contribuyenteId);
if (categoria) params.set('categoria', categoria);
const { data } = await apiClient.get(`/documentos/extras?${params}`);
return data;
}
export async function listarCategoriasExtras(
contribuyenteId?: string | null,
): Promise<string[]> {
const params = new URLSearchParams();
if (contribuyenteId) params.set('contribuyenteId', contribuyenteId);
const { data } = await apiClient.get(`/documentos/extras/categorias?${params}`);
return data;
}
export async function crearExtra(
input: CreateExtraInput,
contribuyenteId?: string | null,
): Promise<DocumentoExtra> {
const body = contribuyenteId ? { ...input, contribuyenteId } : input;
const { data } = await apiClient.post('/documentos/extras', body);
return data;
}
export async function descargarExtraPdf(id: number): Promise<Blob> {
const { data } = await apiClient.get(`/documentos/extras/${id}/pdf`, {
responseType: 'blob',
});
return data;
}
export async function eliminarExtra(id: number): Promise<void> {
await apiClient.delete(`/documentos/extras/${id}`);
}