fix(mi-dia): admin/director ven todos los leads y oportunidades

- esMio: admin/director_ventas/direccion_general ven todo
- Controller: admin carga todas las capturas y clientes (no solo las suyas)
- Admin ahora ve 123 leads + 8 ops + 5 apartados
This commit is contained in:
2026-09-08 08:21:23 +00:00
parent de1ee5578e
commit 52429c9f14
2 changed files with 7 additions and 4 deletions

View File

@@ -43,9 +43,10 @@ export async function resumenMiDiaEndpoint(req: Request, res: Response): Promise
console.error('No se pudieron listar los usuarios del workspace de Monday:', err) console.error('No se pudieron listar los usuarios del workspace de Monday:', err)
} }
// Capturas de afluencia registradas por el usuario (registro local) // Capturas de afluencia: admin ve todas, otros solo las suyas
const esAdmin = usuario.rol === 'admin' || usuario.rol === 'direccion_general' || usuario.rol === 'director_ventas'
const capturas = await prisma.leadCaptura.findMany({ const capturas = await prisma.leadCaptura.findMany({
where: { usuarioId: usuario.id }, where: esAdmin ? {} : { usuarioId: usuario.id },
orderBy: { createdAt: 'desc' }, orderBy: { createdAt: 'desc' },
}) })
@@ -60,9 +61,9 @@ export async function resumenMiDiaEndpoint(req: Request, res: Response): Promise
...mappings.map((m) => m.oportunidadId), ...mappings.map((m) => m.oportunidadId),
]) ])
// Altas de clientes iniciadas por el usuario (registro local) // Altas de clientes: admin ve todas, otros solo las suyas
const clientes = await prisma.cliente.findMany({ const clientes = await prisma.cliente.findMany({
where: { capturadoPorId: usuario.id }, where: esAdmin ? {} : { capturadoPorId: usuario.id },
orderBy: { createdAt: 'desc' }, orderBy: { createdAt: 'desc' },
}) })

View File

@@ -230,7 +230,9 @@ export async function resumenMiDia(
// personas: solo cuenta la captura local. Funciona SIN vínculo Monday. // personas: solo cuenta la captura local. Funciona SIN vínculo Monday.
const idsCapturados = capturadosIds ?? new Set(capturas.map((c) => c.leadId)) const idsCapturados = capturadosIds ?? new Set(capturas.map((c) => c.leadId))
const esCompartido = miId !== null && compartidoId !== null && compartidoId > 0 && miId === compartidoId const esCompartido = miId !== null && compartidoId !== null && compartidoId > 0 && miId === compartidoId
const esAdmin = usuario.rol === 'admin' || usuario.rol === 'direccion_general' || usuario.rol === 'director_ventas'
const esMio = (peopleIds: number[], itemId: string): boolean => { const esMio = (peopleIds: number[], itemId: string): boolean => {
if (esAdmin) return true
if (idsCapturados.has(itemId)) return true if (idsCapturados.has(itemId)) return true
if (esCompartido || miId === null) return false if (esCompartido || miId === null) return false
return peopleIds.includes(miId) return peopleIds.includes(miId)