import { createOperationKey } from '@/lib/operation-key'; import { Head, Link, router } from '@inertiajs/react'; import { useState } from 'react'; import ProfileNavigation from '@/components/profile-navigation'; import { profileJson } from '@/lib/profile-json'; import { button, control } from '@/pages/management/shared'; import { modalityLabels } from '@/components/opportunity-search-filters'; import ProfileProofPicker from '@/components/profile-proof-picker'; const representations: Record = { individual: 'Em nome próprio', company: 'Empresa', public_entity: 'Entidade pública', association: 'Associação', partner: 'Parceiro ou representante', }; const requestStates: Record = { pending: 'Em análise', approved: 'Aprovado', rejected: 'Devolvido ou recusado', cancelled: 'Cancelado', }; type RequestEntry = { id: string; status: string; reason: string; decision_reason: string | null; created_at: string; }; export default function RequestProfile({ requests, types, organizations, documents, }: { requests: RequestEntry[]; types: string[]; organizations: { id: string; name: string }[]; documents: { id: string; file_name: string }[]; }) { const [representation, setRepresentation] = useState('individual'); const [organization, setOrganization] = useState(''); const [selected, setSelected] = useState([]); const [proofs, setProofs] = useState([]); const [reason, setReason] = useState(''); const [key, setKey] = useState(() => createOperationKey()); const [message, setMessage] = useState(''); const [busy, setBusy] = useState(false); async function send() { setBusy(true); setMessage(''); try { const result = await profileJson('/perfil/promotor', { creation_key: key, representation_type: representation, organization_id: representation === 'individual' ? null : organization, opportunity_types: selected, document_ids: proofs, reason, }); setMessage(result.message); setKey(createOperationKey()); router.reload(); } catch (error) { setMessage( error instanceof Error ? error.message : 'Resposta indisponível. Confira o acompanhamento antes de repetir.', ); } finally { setBusy(false); } } const toggle = (values: string[], id: string) => values.includes(id) ? values.filter((v) => v !== id) : [...values, id]; return (

Solicitar perfil de Promotor

Indique em nome de quem vai actuar, as modalidades que pretende preparar e os comprovativos do pedido. Pode acompanhar a decisão nesta página. A submissão do pedido não activa o perfil.

{ e.preventDefault(); void send(); }} > {representation !== 'individual' && ( )}
Que oportunidades pretende preparar?
{types.map((type) => ( ))}
{!documents.length && (

Sem comprovativos próprios disponíveis. Pode anexar ao seu dossier no{' '} Balcão ; o ficheiro precisa de análise antimalware concluída.

)}