import { createOperationKey } from '@/lib/operation-key';
import { useForm } from '@inertiajs/react';
import { card, input, button } from '@/pages/investment/shared';
export type DeskDocument = {
id: string;
document_id: string;
file_name: string;
status: string;
malware_scan_status: string;
category: string;
source_reference: string;
};
export function DocumentReview({
caseId,
version,
documents,
requestId,
}: {
caseId: string;
version: number;
documents: DeskDocument[];
requestId?: string;
}) {
const form = useForm({
version,
request_id: requestId ?? null,
document: documents[0]?.id ?? '',
outcome: 'internal_verified',
what_checked: '',
evidence: '',
supports: [] as string[],
});
return (
);
}
export type DeskPayment = {
id: string;
reference: string;
amount: string;
currency: string;
source_reference: string;
document_id: string | null;
status: string;
verified_by: number | null;
reason: string | null;
version: number;
};
export function RequestOperations({
requestId,
owner,
reviewer,
documents,
payments,
}: {
requestId: string;
owner: boolean;
reviewer: boolean;
documents: DeskDocument[];
payments: DeskPayment[];
}) {
const payment = useForm({
reference: '',
amount: '',
currency: 'MZN',
source_reference: '',
document_id: '',
consent: false,
});
const review = useForm({
payment: payments[0]?.id ?? '',
version: payments[0]?.version ?? 1,
status: 'internal_verified',
reason: '',
evidence: '',
});
const communication = useForm({
channel: 'phone',
direction: 'received',
occurred_at: '',
summary: '',
evidence: '',
client_key: createOperationKey(),
});
return (
Pagamentos e comunicações — registos manuais
Sem integração bancária, SMS ou WhatsApp nesta fase. Nenhum
registo abaixo confirma automaticamente pagamento ou entrega de
mensagem.
{payments.map((p) => (
{p.reference} · {p.amount} {p.currency} ·{' '}
{p.status === 'internal_verified'
? 'Comprovativo conferido internamente'
: p.status === 'internal_issue'
? 'Problema na conferência interna'
: 'Declarado — por conferir'}
Fonte do valor: {p.source_reference}
Responsável pela conferência:{' '}
{p.verified_by ?? 'Ainda sem conferência'} · {p.reason}
))}
{owner && (
)}
{reviewer && (
)}
{(owner || reviewer) && (
)}
);
}