132 lines
5.4 KiB
TypeScript
132 lines
5.4 KiB
TypeScript
import { businessPointApplicable } from '@/lib/business-locations';
|
|
|
|
export type RegisteredBusinessLocation = {
|
|
id: string;
|
|
precision_level: string;
|
|
is_public: boolean;
|
|
has_geometry: boolean;
|
|
latitude: number | string | null;
|
|
longitude: number | string | null;
|
|
};
|
|
|
|
export default function BusinessPointSummary({
|
|
payload,
|
|
registered,
|
|
available = true,
|
|
published = false,
|
|
territoryLabel,
|
|
}: {
|
|
payload: Record<string, string | undefined>;
|
|
registered?: RegisteredBusinessLocation | null;
|
|
available?: boolean;
|
|
published?: boolean;
|
|
territoryLabel?: string;
|
|
}) {
|
|
const active = businessPointApplicable(payload);
|
|
if (!active && !registered) return null;
|
|
const source =
|
|
payload.location_point_source_mode === 'listing'
|
|
? payload.source_reference
|
|
: payload.location_point_source_reference;
|
|
const date =
|
|
payload.location_point_source_mode === 'listing'
|
|
? payload.source_date
|
|
: payload.location_point_source_date;
|
|
return (
|
|
<aside
|
|
className="space-y-2 rounded border p-3 text-sm"
|
|
aria-label="Localização primária e preparação do ponto"
|
|
>
|
|
{registered && (
|
|
<p>
|
|
Localização primária actualmente cadastrada:{' '}
|
|
{registered.is_public
|
|
? 'divulgação marcada como pública'
|
|
: 'reservada'}
|
|
, precisão{' '}
|
|
{(
|
|
{
|
|
province: 'província',
|
|
district: 'distrito',
|
|
admin_post: 'posto administrativo',
|
|
locality: 'localidade',
|
|
exact: 'exacta',
|
|
} as Record<string, string>
|
|
)[registered.precision_level] ?? registered.precision_level}
|
|
.
|
|
{registered.latitude !== null &&
|
|
registered.longitude !== null && (
|
|
<>
|
|
{' '}
|
|
Latitude {registered.latitude}; longitude{' '}
|
|
{registered.longitude}.
|
|
</>
|
|
)}
|
|
</p>
|
|
)}
|
|
{active ? (
|
|
<>
|
|
<p>
|
|
{published
|
|
? 'Ponto declarado na publicação: latitude'
|
|
: 'Ponto em preparação: latitude'}{' '}
|
|
{payload.location_latitude || 'por indicar'}; longitude{' '}
|
|
{payload.location_longitude || 'por indicar'}. Usa o
|
|
território declarado; com várias localizações, é
|
|
necessário escolher a correspondente.
|
|
</p>
|
|
{territoryLabel && (
|
|
<p>
|
|
Localização declarada para o ponto: {territoryLabel}
|
|
.
|
|
</p>
|
|
)}
|
|
<p>
|
|
Fonte do ponto: {source || 'por indicar'}. Data da
|
|
fonte: {date || 'desconhecida'}. Referência{' '}
|
|
{payload.location_point_share_source === 'yes'
|
|
? 'também proposta para divulgação pública'
|
|
: 'mantida no processo reservado'}
|
|
; a data acompanha o ponto publicado.
|
|
</p>
|
|
{published ? (
|
|
<p>
|
|
Dados utilizados na publicação e preservados no
|
|
histórico reservado. A localização actualmente
|
|
cadastrada é apresentada acima; uma edição posterior
|
|
não reescreve o histórico.
|
|
</p>
|
|
) : (
|
|
<p>
|
|
A gravação não publica o ponto. Na publicação
|
|
autorizada do anúncio, este ponto passa a primário
|
|
público e substitui o primário cadastrado. A versão
|
|
anterior fica no histórico reservado; as
|
|
localizações secundárias são conservadas. Confirme
|
|
território e coordenadas após alterações: a
|
|
declaração não comprova a correspondência espacial
|
|
ou a localização real.
|
|
</p>
|
|
)}
|
|
{!available && (
|
|
<p role="alert">
|
|
O suplemento de localização ainda não está instalado
|
|
neste destino. Instale a actualização antes de
|
|
submeter este ponto ou conserve o cadastro
|
|
existente.
|
|
</p>
|
|
)}
|
|
</>
|
|
) : (
|
|
registered && (
|
|
<p>
|
|
Este formulário não propõe um novo ponto. O cadastro
|
|
existente é conservado, incluindo as divulgações já
|
|
registadas.
|
|
</p>
|
|
)
|
|
)}
|
|
</aside>
|
|
);
|
|
}
|