Skip to main content

NotificacionesController

Este controlador gestiona el envío y configuración de notificaciones para los usuarios. Las notificaciones cubren eventos como bajo stock, vencimiento de productos, comentarios, recomendaciones de reposición y actualizaciones de la app.


🔍 Ubicación

src/controllers/notificaciones.controller.ts


📌 Endpoints

📤 Enviar notificaciones

🚨 Stock bajo

POST /notificaciones/stock-bajo

Envía notificaciones por productos con bajo stock.

Body (opcional):
{
"productos": [{ "id": 1 }, { "id": 2 }]
}
Respuesta:
{ "mensaje": "Notificaciones de stock bajo enviadas correctamente" }

🧪 Producto vencido

POST /notificaciones/producto-vencido

Envía notificaciones por productos vencidos. Si no se especifican productos, se notifican todos los vencidos.

Body (opcional):
{
"productos": [{ "id": 3 }]
}
Respuesta:
{ "mensaje": "Notificaciones de producto vencido enviadas correctamente" }

💬 Comentario en producto

POST /notificaciones/comentario-producto

Envía una notificación cuando alguien comenta un producto.

Body:
{ "idComentario": 7 }
Respuesta:
{ "mensaje": "Notificaciones de comentario enviadas correctamente" }

🔄 Reposición recomendada

POST /notificaciones/reposicion-recomendada

Envía notificaciones de productos que se recomienda reponer.

Body (opcional):
{
"productos": [{ "id": 8 }]
}
Respuesta:
{ "mensaje": "Notificaciones de reposición recomendada enviadas correctamente" }

🛠️ Actualización de la aplicación

POST /notificaciones/actualizacion-app

Envía una notificación global sobre actualizaciones en la app.

Body:
{
"titulo": "Nueva versión disponible",
"mensaje": "La versión 2.0 incluye mejoras importantes."
}
Respuesta:
{ "mensaje": "Notificaciones de actualización de la app enviadas correctamente" }

📥 Obtener notificaciones del usuario

GET /notificaciones/usuario/{idUsuario}

Obtiene las últimas 20 notificaciones del usuario, filtradas por sus preferencias.

Parámetros:

  • idUsuario (path) – ID del usuario.
Respuesta:
[
{
"idNotificacion": 1,
"tipo": "STOCK_BAJO",
"titulo": "Alerta de stock",
"mensaje": "El producto X tiene bajo stock",
"leida": false,
"fechaEnvio": "2025-08-03T14:23:00Z"
}
]

⚠️ Si el usuario no tiene preferencias configuradas, se crean por defecto con todos los tipos de notificación habilitados.


✅ Marcar notificación como leída

PATCH /notificaciones/{idNotificacion}

Marca una notificación específica como leída.

Parámetros:

  • idNotificacion (path) – ID de la notificación.
Respuesta:
{ "mensaje": "Notificación marcada como leída" }

⚙️ Actualizar preferencias de notificación

PATCH /notificaciones/preferencias/{idUsuario}

Permite actualizar las preferencias de notificación del usuario.

Parámetros:

  • idUsuario (path) – ID del usuario.

Body:

{
"stockBajo": true,
"productoVencido": false,
"comentarios": true,
"reposicion": true,
"actualizacion": true
}
Respuesta:
{ "mensaje": "Preferencias actualizadas correctamente" }

🛠️ Notas técnicas

  • Las preferencias de notificación se almacenan en la tabla preferenciasNotificaciones.
  • Las notificaciones se filtran según las preferencias activas del usuario antes de ser mostradas.
  • Las funciones de envío de notificaciones utilizan servicios separados especializados para cada tipo (stockBajo, productoVencido, etc.).
  • Si un usuario no tiene configuraciones previas, se crean automáticamente con todos los tipos activados.