From 6b033c79eba62bd4e9486a8bd2b333b8dc05ac0a Mon Sep 17 00:00:00 2001 From: Felipe Coutinho Date: Sat, 17 Jan 2026 16:56:01 +0000 Subject: [PATCH] =?UTF-8?q?feat:=20sincronizar=20nome=20entre=20usu=C3=A1r?= =?UTF-8?q?io=20e=20pagador=20admin?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Ao atualizar nome no perfil, sincronizar com pagador admin - Ao editar pagador admin, sincronizar com nome do usuário Co-Authored-By: Claude Opus 4.5 --- app/(dashboard)/ajustes/actions.ts | 15 +++++++++++++++ app/(dashboard)/pagadores/actions.ts | 18 ++++++++++++++---- 2 files changed, 29 insertions(+), 4 deletions(-) diff --git a/app/(dashboard)/ajustes/actions.ts b/app/(dashboard)/ajustes/actions.ts index b741c8f..920dc7a 100644 --- a/app/(dashboard)/ajustes/actions.ts +++ b/app/(dashboard)/ajustes/actions.ts @@ -2,6 +2,8 @@ import { auth } from "@/lib/auth/config"; import { db, schema } from "@/lib/db"; +import { pagadores } from "@/db/schema"; +import { PAGADOR_ROLE_ADMIN } from "@/lib/pagadores/constants"; import { eq, and, ne } from "drizzle-orm"; import { headers } from "next/headers"; import { revalidatePath } from "next/cache"; @@ -72,13 +74,26 @@ export async function updateNameAction( const validated = updateNameSchema.parse(data); const fullName = `${validated.firstName} ${validated.lastName}`; + // Atualizar nome do usuário await db .update(schema.user) .set({ name: fullName }) .where(eq(schema.user.id, session.user.id)); + // Sincronizar nome com o pagador admin + await db + .update(pagadores) + .set({ name: fullName }) + .where( + and( + eq(pagadores.userId, session.user.id), + eq(pagadores.role, PAGADOR_ROLE_ADMIN) + ) + ); + // Revalidar o layout do dashboard para atualizar a sidebar revalidatePath("/", "layout"); + revalidatePath("/pagadores"); return { success: true, diff --git a/app/(dashboard)/pagadores/actions.ts b/app/(dashboard)/pagadores/actions.ts index 93e2999..25b77dc 100644 --- a/app/(dashboard)/pagadores/actions.ts +++ b/app/(dashboard)/pagadores/actions.ts @@ -1,6 +1,6 @@ "use server"; -import { pagadores, pagadorShares } from "@/db/schema"; +import { pagadores, pagadorShares, user } from "@/db/schema"; import { handleActionError, revalidateForEntity } from "@/lib/actions/helpers"; import type { ActionResult } from "@/lib/actions/types"; import { db } from "@/lib/db"; @@ -113,11 +113,11 @@ export async function updatePagadorAction( input: UpdateInput ): Promise { try { - const user = await getUser(); + const currentUser = await getUser(); const data = updateSchema.parse(input); const existing = await db.query.pagadores.findFirst({ - where: and(eq(pagadores.id, data.id), eq(pagadores.userId, user.id)), + where: and(eq(pagadores.id, data.id), eq(pagadores.userId, currentUser.id)), }); if (!existing) { @@ -139,7 +139,17 @@ export async function updatePagadorAction( isAutoSend: data.isAutoSend ?? false, role: existing.role ?? PAGADOR_ROLE_TERCEIRO, }) - .where(and(eq(pagadores.id, data.id), eq(pagadores.userId, user.id))); + .where(and(eq(pagadores.id, data.id), eq(pagadores.userId, currentUser.id))); + + // Se o pagador é admin, sincronizar nome com o usuário + if (existing.role === PAGADOR_ROLE_ADMIN) { + await db + .update(user) + .set({ name: data.name }) + .where(eq(user.id, currentUser.id)); + + revalidatePath("/", "layout"); + } revalidate();