Files
Investidor-V2/resources/js/components/education-submitted-snapshot.tsx
T

111 lines
4.2 KiB
TypeScript

import { Link } from '@inertiajs/react';
export type EducationDraft = {
id: string;
kind: 'demands' | 'capacities';
version_no: number;
state: 'draft' | 'submitted';
updated_at: string;
payload: Record<string, string | number | null>;
record_id: string | null;
references: {
project_id?: { name?: string };
course_id?: { title?: string };
occupation_id?: { name?: string };
skill_id?: { name?: string };
territory_path?: { name: string }[];
} | null;
};
export type EducationDraftSummary = Pick<
EducationDraft,
'id' | 'kind' | 'version_no' | 'state' | 'updated_at'
> & { label?: string | null };
export default function EducationSubmittedSnapshot({
draft,
}: {
draft: EducationDraft;
}) {
const labels: Record<string, string> = {
employer: 'Empregador declarante',
qualification: 'Qualificação',
quantity:
draft.kind === 'demands'
? 'Trabalhadores necessários'
: 'Vagas formativas',
period_start: 'Início do período',
period_end: 'Fim do período',
reference_date: 'Data de referência da fonte',
valid_until: 'Fonte válida até',
source: 'Fonte e evidência',
};
return (
<section className="rounded border p-4">
<h2 className="text-xl font-semibold">Declaração submetida</h2>
<p>
Os dados abaixo conservam a submissão efectuada. A revisão
independente mantém o seu percurso; esta consulta não certifica
a instituição ou formação.
</p>
<dl className="my-4 space-y-2">
{Object.entries(labels)
.filter(
([key]) =>
draft.payload[key] !== undefined &&
draft.payload[key] !== null &&
draft.payload[key] !== '',
)
.map(([key, label]) => (
<div key={key}>
<dt className="font-semibold">{label}</dt>
<dd className="whitespace-pre-wrap">
{draft.payload[key]}
</dd>
</div>
))}
{draft.references && (
<>
<div>
<dt className="font-semibold">
{draft.kind === 'demands'
? 'Projecto utilizado'
: 'Curso utilizado'}
</dt>
<dd>
{draft.references.project_id?.name ??
draft.references.course_id?.title ??
'Referência conservada'}
</dd>
</div>
<div>
<dt className="font-semibold">
Ocupação / competência utilizadas
</dt>
<dd>
{draft.references.occupation_id?.name} /{' '}
{draft.references.skill_id?.name}
</dd>
</div>
<div>
<dt className="font-semibold">Local utilizado</dt>
<dd>
{draft.references.territory_path
?.map((node) => node.name)
.join(' / ') || 'Referência conservada'}
</dd>
</div>
</>
)}
</dl>
{draft.kind === 'demands' && draft.record_id && (
<Link
className="underline"
href={`/management/education/demands/${draft.record_id}/analysis`}
>
Consultar análise e estado actual
</Link>
)}
</section>
);
}