Servicio de Notificaciones por Comentario de Producto
Este servicio se encarga de notificar a todos los miembros de una empresa cuando un producto recibe un nuevo comentario.
🔍 Ubicación
src/services/notificaciones/comentarioProductos.service.ts
📦 Dependencias utilizadas
prismaClient
— Cliente de Prisma configurado para interactuar con la base de datos.TipoNotificacion
— Enumeración generada por Prisma para definir tipos de notificaciones.puedeNotificar
— Función que verifica si un usuario tiene habilitado recibir cierto tipo de notificación.
🧩 Función: notificarComentarioProducto(idComentario: number)
Envía una notificación a todos los miembros de la empresa propietaria de un producto que ha recibido un nuevo comentario.
Parámetros
Nombre | Tipo | Descripción |
---|---|---|
idComentario | number | ID único del comentario que activó la notificación. |
📜 Flujo de ejecución
-
Obtener el comentario y sus relaciones
Busca en la base de datos el comentario por suidComentario
, incluyendo el producto al que pertenece y el usuario dueño del producto. -
Validar existencia
Si no existe el comentario, el producto o el usuario propietario, se emite una advertencia y se detiene el proceso. -
Validar pertenencia a empresa
Si el usuario propietario del producto no pertenece a una empresa (empresaId
), se detiene el proceso. -
Obtener miembros de la empresa
Busca todos los usuarios que pertenecen a la misma empresa. -
Construir mensaje y título de la notificación
Ejemplo:
Título: Nuevo comentario en producto: Producto X
Mensaje: Se ha comentado el producto "Producto X": "Texto del comentario"
-
Filtrar miembros que pueden recibir la notificación
Usa la funciónpuedeNotificar
para verificar si cada miembro tiene activado el tipo de notificaciónCOMENTARIO_EQUIPO
. -
Enviar notificaciones
Inserta todas las notificaciones en la base de datos medianteprisma.notificaciones.createMany
.
Ejemplo de uso
await notificarComentarioProducto(45);
Este ejemplo enviará la notificación a los miembros de la empresa propietaria del producto comentado con ID de comentario 45
.
🧠 Observaciones
- Si no se encuentran miembros en la empresa, no se enviarán notificaciones.
- Usa
puedeNotificar
para respetar las preferencias individuales de notificación. - La relación entre comentario → producto → usuario es clave para identificar a los destinatarios.