"use client" import type React from "react" import { useState, useEffect } from "react" import { useRouter } from "next/navigation" import { Button } from "@/components/ui/button" import { Input } from "@/components/ui/input" import { Label } from "@/components/ui/label" import { Textarea } from "@/components/ui/textarea" import { createProduto, updateProduto } from "@/lib/actions" import { toast } from "@/components/ui/use-toast" import { Dialog, DialogContent, DialogHeader, DialogTitle, DialogTrigger, DialogDescription, } from "@/components/ui/dialog" import type { Produto } from "@/lib/supabase" type TipoOptions = "PF" | "PJ" | "SSL" | "NFe" interface ProductFormDialogProps { product?: Produto | null } const parseCurrency = (value: string) => Number(value.replace(/\D/g, "")) const formatCurrency = (value: string) => { const amount = Number(value.replace(/\D/g, "")) / 100 return new Intl.NumberFormat("pt-BR", { style: "currency", currency: "BRL" }).format(amount) } export function ProductFormDialog({ product }: ProductFormDialogProps) { const [open, setOpen] = useState(false) const router = useRouter() const [formData, setFormData] = useState({ nome: "", descricao: "", price: "0", tipo: "PF" as TipoOptions, validade: "", midia: "", }) useEffect(() => { if (product) { setFormData({ nome: product.nome, descricao: product.descricao ?? "", price: formatCurrency((product.preco_centavos).toString()), tipo: product.tipo, validade: product.validade, midia: product.midia ?? "", }) } }, [product]) const handleSubmit = async (e: React.FormEvent) => { e.preventDefault() try { const preco_centavos = parseCurrency(formData.price) if (isNaN(preco_centavos) || preco_centavos <= 0) throw new Error("Preço inválido") const payload = { nome: formData.nome, descricao: formData.descricao, tipo: formData.tipo, validade: formData.validade, midia: formData.midia || undefined, preco_centavos, } if (product) { await updateProduto(product.id, payload) toast({ title: "Produto atualizado", description: "Alterações salvas com sucesso." }) } else { await createProduto(payload) toast({ title: "Produto criado", description: "Adicionado com sucesso." }) } setOpen(false) router.refresh() } catch (error) { toast({ title: "Erro", description: error instanceof Error ? error.message : "Tente novamente.", variant: "destructive", }) } } const handleChange = (e: React.ChangeEvent) => { const { name, value } = e.target setFormData((prev) => ({ ...prev, [name]: value })) } return ( {product ? "Editar Produto" : "Criar Novo Produto"} Preencha os dados do certificado.