import { Button } from '@/components/ui/button'; import { controlClass } from '@/components/procurement'; export type CriterionResult = | 'pending' | 'observed' | 'insufficient' | 'not_applicable'; export type EvaluationPayload = { title: string; nature: string; scope: string; period_start: string | null; period_end: string | null; order_ids: number[]; criteria: { label: string; result: CriterionResult; reason: string; evidence: string; }[]; conclusion: string; critical_occurrences: string; critical_evidence: string; }; export type EvaluationOrder = { id: number; number: string; supplier_id: number; }; export const evaluationStates: Record = { draft: 'Rascunho', review: 'Em revisão', returned: 'Devolvida para correcção', approved: 'Aprovada', }; export const criterionStates: Record = { pending: 'Por analisar', observed: 'Observação fundamentada', insufficient: 'Evidência insuficiente', not_applicable: 'Não aplicável', }; export const emptyEvaluation = (): EvaluationPayload => ({ title: '', nature: '', scope: '', period_start: '', period_end: '', order_ids: [], criteria: [], conclusion: '', critical_occurrences: '', critical_evidence: '', }); export default function SupplierEvaluationFields({ payload, orders, disabled, onChange, }: { payload: EvaluationPayload; orders: EvaluationOrder[]; disabled: boolean; onChange: (value: EvaluationPayload) => void; }) { const set = ( key: K, value: EvaluationPayload[K], ) => onChange({ ...payload, [key]: value }); const criterion = ( index: number, patch: Partial, ) => set( 'criteria', payload.criteria.map((row, i) => i === index ? { ...row, ...patch } : row, ), ); return (