import React, { useState, useEffect } from 'react'; import { Models } from 'appwrite'; import { PedidoData } from '@/services/pedidoService'; import { usuarioService } from '@/services/usuarioService'; import { empresaService } from '@/services/empresaService'; interface PedidoFormProps { onSubmit: (data: PedidoData) => Promise; onCancel?: () => void; initialData?: Models.Document | null; loading?: boolean; statusOptions: string[]; } const PedidoForm: React.FC = ({ onSubmit, onCancel, initialData, loading = false, statusOptions, }) => { const [formData, setFormData] = useState({ status: '', 'valor-total': 0, itens: [], qtdade: [], comprador: '', vendedor: [], }); const [itensText, setItensText] = useState(''); const [usuarios, setUsuarios] = useState([]); const [empresas, setEmpresas] = useState([]); const [message, setMessage] = useState<{ type: 'success' | 'error'; text: string } | null>(null); useEffect(() => { if (initialData) { setFormData({ status: initialData.status || '', 'valor-total': initialData['valor-total'] || 0, itens: (initialData.itens as string[]) || [], qtdade: (initialData.qtdade as number[]) || [], comprador: (initialData.comprador as any)?.$id || initialData.comprador || '', vendedor: Array.isArray(initialData.vendedor) ? initialData.vendedor : [(initialData.vendedor as any)?.$id || initialData.vendedor || ''].filter(Boolean), }); setItensText(((initialData.itens as string[]) || []).join('\n')); } else { setFormData({ status: '', 'valor-total': 0, itens: [], qtdade: [], comprador: '', vendedor: [] }); setItensText(''); } }, [initialData]); useEffect(() => { const load = async () => { const uRes = await usuarioService.listar(1, 50); if (uRes.success) setUsuarios(uRes.documents); const eRes = await empresaService.listar(1, 50); if (eRes.success) setEmpresas(eRes.documents); }; load(); }, []); const handleSubmit = async (e: React.FormEvent) => { e.preventDefault(); const itens = itensText.split('\n').filter(t => t.trim() !== ''); const success = await onSubmit({ ...formData, itens }); if (success) { setMessage({ type: 'success', text: initialData ? '🔄 Pedido atualizado com sucesso!' : '🎉 Pedido cadastrado com sucesso!', }); if (!initialData) { setFormData({ status: '', 'valor-total': 0, itens: [], qtdade: [], comprador: '', vendedor: [] }); setItensText(''); } setTimeout(() => setMessage(null), 3000); } else { setMessage({ type: 'error', text: initialData ? 'Erro ao atualizar pedido' : 'Erro ao cadastrar pedido' }); } }; const handleChange = ( e: React.ChangeEvent ) => { const { name, value } = e.target; if (name === 'itens') { setItensText(value); } else if (name === 'valor-total') { setFormData(prev => ({ ...prev, [name]: parseFloat(value) })); } else if (name === 'vendedor') { setFormData(prev => ({ ...prev, [name]: value ? [value] : [] })); } else { setFormData(prev => ({ ...prev, [name]: value })); } if (message) setMessage(null); }; return (

{initialData ? '✏️ Editar Pedido' : '➕ Novo Pedido'}

{initialData ? 'Atualize os dados do pedido.' : 'Cadastre um novo pedido na plataforma SaveInMed.'}

{message && (
{message.text}
)}