91 lines
3.2 KiB
TypeScript
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}`);
|
|
}
|