feat: sincronizar nome entre usuário e pagador admin

- 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 <noreply@anthropic.com>
This commit is contained in:
Felipe Coutinho
2026-01-17 16:56:01 +00:00
parent 6a45a5110d
commit 6b033c79eb
2 changed files with 29 additions and 4 deletions

View File

@@ -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,

View File

@@ -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<ActionResult> {
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();