feat(web): load preventive inventory from frozen scope
This commit is contained in:
@@ -0,0 +1,43 @@
|
||||
export interface InspectionPreventiveCandidate {
|
||||
id: string;
|
||||
code: string;
|
||||
name: string;
|
||||
typeName: string;
|
||||
}
|
||||
|
||||
interface PreventiveCandidateResponse {
|
||||
data: InspectionPreventiveCandidate[];
|
||||
}
|
||||
|
||||
export async function listInspectionPreventiveCandidates(
|
||||
visitId: string,
|
||||
search = '',
|
||||
): Promise<InspectionPreventiveCandidate[]> {
|
||||
const query = new URLSearchParams();
|
||||
const term = search.trim();
|
||||
if (term) query.set('search', term);
|
||||
|
||||
const response = await fetch(
|
||||
`/api/v3/inspection-visits/${visitId}/preventive-candidates${query.size ? `?${query}` : ''}`,
|
||||
{
|
||||
method: 'GET',
|
||||
credentials: 'same-origin',
|
||||
headers: { Accept: 'application/json' },
|
||||
},
|
||||
);
|
||||
|
||||
if (!response.ok) {
|
||||
let message = 'No se pudo cargar el Inventario disponible para esta Inspección';
|
||||
try {
|
||||
const payload = await response.json() as { message?: string | string[] };
|
||||
if (Array.isArray(payload.message)) message = payload.message.join('. ');
|
||||
else if (payload.message) message = payload.message;
|
||||
} catch {
|
||||
// Conserva el mensaje funcional cuando la respuesta no sea JSON.
|
||||
}
|
||||
throw new Error(message);
|
||||
}
|
||||
|
||||
const payload = await response.json() as PreventiveCandidateResponse;
|
||||
return payload.data ?? [];
|
||||
}
|
||||
Reference in New Issue
Block a user