import { db } from "@/lib/db"; import { sendMail } from "@/lib/mail"; async function registrarEmail(params: { briefingId: string; destino: string; assunto: string; texto: string; }) { const registro = await db.envioNotificacao.create({ data: { briefingId: params.briefingId, canal: "EMAIL", destino: params.destino, assunto: params.assunto, status: "PENDENTE" } }); try { await sendMail({ to: params.destino, subject: params.assunto, text: params.texto }); await db.envioNotificacao.update({ where: { id: registro.id }, data: { status: "ENVIADO", tentativas: { increment: 1 }, enviadoEm: new Date() } }); } catch (error) { await db.envioNotificacao.update({ where: { id: registro.id }, data: { status: "ERRO", tentativas: { increment: 1 }, erro: error instanceof Error ? error.message : "Erro desconhecido" } }); } } export async function notificarBriefingEnviado(briefingId: string) { const briefing = await db.briefing.findUnique({ where: { id: briefingId }, include: { cliente: { include: { user: true } } } }); if (!briefing) { return; } const appUrl = process.env.APP_URL ?? "http://localhost:3000"; const pdfUrl = `${appUrl}/api/briefings/${briefing.id}/pdf`; const adminEmail = process.env.ADMIN_EMAIL; await registrarEmail({ briefingId, destino: briefing.cliente.user.email, assunto: "Briefing enviado - SeConectai", texto: [ `O briefing "${briefing.titulo}" foi enviado com sucesso.`, "", `Voce pode baixar o PDF em: ${pdfUrl}`, "", "Este e-mail nao inclui CPF completo nem senhas." ].join("\n") }); if (adminEmail) { await registrarEmail({ briefingId, destino: adminEmail, assunto: "Novo briefing enviado", texto: [ `Um novo briefing foi enviado por ${briefing.cliente.nomeCompleto}.`, `Titulo: ${briefing.titulo}`, `Painel: ${appUrl}/admin/briefings/${briefing.id}`, "", "Este e-mail nao inclui CPF completo nem senhas." ].join("\n") }); } if ( process.env.EVOLUTION_API_URL && process.env.EVOLUTION_API_KEY && process.env.EVOLUTION_API_INSTANCE && process.env.ADMIN_WHATSAPP ) { await db.envioNotificacao.create({ data: { briefingId, canal: "WHATSAPP", destino: process.env.ADMIN_WHATSAPP, assunto: "Novo briefing enviado", status: "PENDENTE", erro: "Pendente de consulta da versao/formato de payload da Evolution API antes do envio." } }); } }