import type { PartnershipEditor, PartnershipSection, } from '@/lib/partnership-edit'; import { labels, type Catalogues } from '@/pages/partnerships/shared'; const fields: Record = { title: 'Título', offer: 'Recursos que oferece', seeking: 'Colaboração que procura', organization_id: 'Organização representada', sector_id: 'Sector', kind: 'Oferta ou procura', partnership_type: 'Tipo de parceria', deadline: 'Prazo para manifestações de interesse', summary: 'Resumo', requirements: 'Requisitos desejáveis', mandatory: 'Critérios obrigatórios', confidentiality: 'Visibilidade', consent: 'Autorização de divulgação', availability: 'Disponibilidade dos recursos ou colaboração', locations: 'Localizações e respectivas fontes', origins: 'Origens documentais', }; export default function PartnershipEditComparison({ editor, catalogues, }: { editor: PartnershipEditor; catalogues: Catalogues; }) { function display( key: PartnershipSection, value: PartnershipEditor['values'][PartnershipSection], ): string { if (typeof value === 'boolean') return value ? 'Autorização indicada' : 'Sem autorização indicada'; if (Array.isArray(value)) return value.length ? value .map((item) => { if (typeof item === 'string') return ( catalogues.criteria[item] ?? 'Critério anterior fora da configuração actual' ); if ('geo_location_id' in item) return `${catalogues.territories.find((place) => place.id === item.geo_location_id)?.name ?? 'Localização anteriormente indicada'} · ${{ primary: 'Principal', operating: 'Operação', coverage: 'Cobertura' }[item.role] ?? item.role} · ${item.source_reference}`; return ( catalogues.sources?.find( (source) => source.type === item.type && source.target_id === item.target_id, )?.title ?? 'Origem documental anteriormente associada' ); }) .join('\n') : 'Nenhuma selecção'; if (!value) return 'Não indicado'; if (key === 'organization_id') return ( catalogues.organizations.find( (item) => String(item.id) === value, )?.name ?? 'Organização anteriormente indicada' ); if (key === 'sector_id') return ( catalogues.sectors.find((item) => String(item.id) === value) ?.name ?? 'Sector anteriormente indicado' ); if (key === 'partnership_type') return ( catalogues.types[value] ?? 'Tipo anterior fora da configuração actual' ); if (key === 'kind') return value === 'offering' ? 'Oferta' : value === 'seeking' ? 'Procura' : value; if (key === 'confidentiality') return value === 'private' ? 'Privada' : value === 'public' ? 'Pública' : value; return value; } return (
{editor.problem &&

{editor.problem}

} {editor.invalid && (

Os dados desta edição não foram reconhecidos. Reabra a parceria correcta antes de guardar; a edição actual foi conservada.

)} {editor.retryingCreation && (

Repita a criação anterior para recuperar o registo. O pedido anterior será reutilizado, sem substituir as suas edições posteriores nem criar outra parceria.

)} {editor.retryingSave && (

A edição anterior não foi confirmada. Recuperar repete exactamente a mesma tentativa e conserva o que preparou depois de enviar.

)} {editor.mustRefresh && (

Consulte os dados actuais antes de adoptar uma versão para uma nova tentativa.

)} {editor.refreshing && (

A recuperar os dados actuais. As suas edições são conservadas.

)} {editor.current && !editor.editable && (

Estado actual:{' '} {labels[editor.current.status] ?? 'Estado por confirmar'}. A parceria está disponível para consulta; a edição por guardar foi conservada e não pode ser gravada neste estado.

)} {editor.current?.status === 'published' && (

Ao guardar esta revisão, a proposta volta a rascunho e requer nova submissão e revisão pelo percurso existente.

)} {(editor.stale || editor.retryingSave) && ( <>

A proposta mudou desde{' '} {editor.baseVersion === null ? 'a preparação inicial' : `a versão ${editor.baseVersion}`} . Compare com a versão {editor.current?.version} e escolha como conservar os seus dados.

{editor.changed.map((key) => ( ))}
Campo Actualmente guardado Sua edição Escolha
{fields[key]} {editor.current && display( key, editor.current.values[key], )} {display(key, editor.values[key])} {editor.conflicts.includes(key) ? ( <> {editor.unresolved.includes( key, ) && (

Escolha o valor a conservar neste campo.

)} ) : ( 'Actualização compatível com a sua edição' )}
)}
); }