diff --git a/marketplace/src/pages/admin/ProductsPage.tsx b/marketplace/src/pages/admin/ProductsPage.tsx index 7cd2995..791fc87 100644 --- a/marketplace/src/pages/admin/ProductsPage.tsx +++ b/marketplace/src/pages/admin/ProductsPage.tsx @@ -51,21 +51,35 @@ export function ProductsPage() { const handleSubmit = async (e: React.FormEvent) => { e.preventDefault() try { + // Convert date to ISO 8601 format for backend + const expiresAtISO = formData.expires_at + ? new Date(formData.expires_at + 'T00:00:00Z').toISOString() + : undefined + if (editingProduct) { - await adminService.updateProduct(editingProduct.id, { + const updated = await adminService.updateProduct(editingProduct.id, { name: formData.name, description: formData.description, batch: formData.batch, - expires_at: formData.expires_at, + expires_at: expiresAtISO, price_cents: formData.price_cents, stock: formData.stock }) + // Update local state instead of reloading + setProducts(prev => prev.map(p => + p.id === editingProduct.id ? { ...p, ...updated } : p + )) } else { - await adminService.createProduct(formData) + const newProduct = await adminService.createProduct({ + ...formData, + expires_at: expiresAtISO || '' + }) + // Add to local state + setProducts(prev => [newProduct, ...prev]) + setTotal(prev => prev + 1) } setShowModal(false) resetForm() - loadProducts() } catch (err) { console.error('Error saving product:', err) alert('Erro ao salvar produto') @@ -76,10 +90,18 @@ export function ProductsPage() { if (!confirm('Tem certeza que deseja excluir este produto?')) return try { await adminService.deleteProduct(id) - loadProducts() - } catch (err) { + // Update local state instead of reloading + setProducts(prev => prev.filter(p => p.id !== id)) + setTotal(prev => prev - 1) + } catch (err: unknown) { console.error('Error deleting product:', err) - alert('Erro ao excluir produto') + // Check if it's a constraint error (product has orders) + const message = (err as { response?: { data?: { error?: string } } })?.response?.data?.error + if (message?.includes('related orders')) { + alert('Não é possível excluir: este produto possui pedidos relacionados.') + } else { + alert('Erro ao excluir produto') + } } }