Files
Investidor-V2/resources/js/components/business-point-summary.tsx
T

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>
);
}