import { useEffect, useState } from 'react'; import { Link, useParams } from 'react-router'; import { Alert, LoadingBlock, errorMessage } from '../components/Feedback'; import { actCompanyResponseContentUrl, getActAdministration } from '../lib/api'; import type { ActAdministrationDetail } from '../lib/api'; import { getInspectionActF4 } from '../lib/inspectionActF4Api'; import { formatDate } from '../lib/format'; export function ActAdministrationDetailPage() { const { actId = '' } = useParams(); const [data, setData] = useState(null); const [reportId, setReportId] = useState(null); const [error, setError] = useState(''); useEffect(() => { Promise.all([getActAdministration(actId), getInspectionActF4(actId)]) .then(([detail, act]) => { setData(detail); setReportId(act.report?.id ?? null); }) .catch((requestError) => setError(errorMessage(requestError))); }, [actId]); if (!data && !error) return ; return
{error && {error}} {data && <>
HISTÓRICO ADMINISTRATIVO

{data.act.actCode}

Registro previo de plazos y respuestas asociados al Acta.

Ver Acta
{reportId &&

Las nuevas respuestas y verificaciones se registran en el Informe relacionado.

}

Antecedentes conservados

{!data.deadlines.length && !data.responses.length &&

No hay antecedentes administrativos anteriores.

} {[...data.deadlines.map((item) => ({ id: item.id, date: item.createdAt, title: 'Plazo registrado', description: `${formatDate(item.responseDueOn)} · ${item.reason}`, fileId: null as string | null, fileName: null as string | null })), ...data.responses.map((item) => ({ id: item.id, date: item.receivedOn, title: 'Respuesta de la empresa', description: item.details ?? 'Sin descripción', fileId: item.id, fileName: item.originalName }))].sort((a, b) => b.date.localeCompare(a.date)).map((item) =>
{item.title}{formatDate(item.date)}

{item.description}

{item.fileName && item.fileId && Abrir {item.fileName}}
)}
}
; }