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ónpuedeNotificarpara 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
puedeNotificarpara respetar las preferencias individuales de notificación. - La relación entre comentario → producto → usuario es clave para identificar a los destinatarios.