"use server"; import { revalidatePath } from "next/cache"; import { z } from "zod"; import { getClienteConta } from "@/lib/account-service"; import { db } from "@/lib/db"; import { normalizeWhatsapp } from "@/lib/validators"; export type ContaState = { ok: boolean; message?: string; }; const atualizarContaSchema = z.object({ nomeCompleto: z.string().trim().min(3), whatsapp: z.string().trim().min(10), razaoSocial: z.string().trim().optional(), cep: z.string().trim().optional(), logradouro: z.string().trim().optional(), numero: z.string().trim().optional(), complemento: z.string().trim().optional(), bairro: z.string().trim().optional(), cidade: z.string().trim().optional(), uf: z.string().trim().max(2).optional() }); export async function atualizarConta( _state: ContaState, formData: FormData ): Promise { const cliente = await getClienteConta(); const parsed = atualizarContaSchema.safeParse({ nomeCompleto: formData.get("nomeCompleto"), whatsapp: formData.get("whatsapp"), razaoSocial: formData.get("razaoSocial") || undefined, cep: formData.get("cep") || undefined, logradouro: formData.get("logradouro") || undefined, numero: formData.get("numero") || undefined, complemento: formData.get("complemento") || undefined, bairro: formData.get("bairro") || undefined, cidade: formData.get("cidade") || undefined, uf: formData.get("uf") || undefined }); if (!parsed.success) { return { ok: false, message: "Revise os dados informados." }; } const whatsapp = normalizeWhatsapp(parsed.data.whatsapp); if (!whatsapp) { return { ok: false, message: "Informe um WhatsApp com DDD." }; } await db.cliente.update({ where: { id: cliente.id }, data: { nomeCompleto: parsed.data.nomeCompleto, whatsapp, razaoSocial: parsed.data.razaoSocial ?? null, cep: parsed.data.cep ?? null, logradouro: parsed.data.logradouro ?? null, numero: parsed.data.numero ?? null, complemento: parsed.data.complemento ?? null, bairro: parsed.data.bairro ?? null, cidade: parsed.data.cidade ?? null, uf: parsed.data.uf?.toUpperCase() ?? null } }); revalidatePath("/minha-conta"); return { ok: true, message: "Dados atualizados." }; } export async function solicitarExclusao(formData: FormData) { const cliente = await getClienteConta(); const motivo = String(formData.get("motivo") ?? "").trim(); await db.solicitacaoExclusao.create({ data: { clienteId: cliente.id, motivo: motivo || null } }); revalidatePath("/minha-conta"); }