119 lines
3.5 KiB
PHP
119 lines
3.5 KiB
PHP
<?php
|
|
/**
|
|
* Ejemplo de uso de NotificationHelper
|
|
*
|
|
* Este archivo muestra cómo usar el helper para crear notificaciones
|
|
* que se envían automáticamente por SSE
|
|
*/
|
|
|
|
require_once __DIR__ . '/../classes/NotificationHelper.php';
|
|
|
|
// ============================================
|
|
// Ejemplo 1: Notificación cuando usuario sube documento
|
|
// ============================================
|
|
function onDocumentUploaded($userId, $documentCount) {
|
|
NotificationHelper::create(
|
|
$userId,
|
|
'document',
|
|
'Usuario subió ' . $documentCount . ' documento(s)',
|
|
[
|
|
'count' => $documentCount,
|
|
'action' => 'view_documents'
|
|
]
|
|
);
|
|
}
|
|
|
|
// ============================================
|
|
// Ejemplo 2: Notificación de mensaje importante
|
|
// ============================================
|
|
function onImportantMessage($userId, $message) {
|
|
NotificationHelper::create(
|
|
$userId,
|
|
'message',
|
|
'Mensaje importante: ' . substr($message, 0, 50),
|
|
[
|
|
'message_preview' => $message,
|
|
'priority' => 'high'
|
|
]
|
|
);
|
|
}
|
|
|
|
// ============================================
|
|
// Ejemplo 3: Notificación de cambio de estado
|
|
// ============================================
|
|
function onUserStatusChange($userId, $oldStatus, $newStatus) {
|
|
$messages = [
|
|
'in_service' => 'Usuario en atención',
|
|
'waiting' => 'Usuario esperando',
|
|
'resolved' => 'Caso resuelto'
|
|
];
|
|
|
|
NotificationHelper::create(
|
|
$userId,
|
|
'status',
|
|
$messages[$newStatus] ?? 'Estado actualizado',
|
|
[
|
|
'old_status' => $oldStatus,
|
|
'new_status' => $newStatus
|
|
]
|
|
);
|
|
}
|
|
|
|
// ============================================
|
|
// Ejemplo 4: Notificación personalizada
|
|
// ============================================
|
|
function sendCustomNotification($userId, $type, $message, $data = []) {
|
|
NotificationHelper::create($userId, $type, $message, $data);
|
|
}
|
|
|
|
// ============================================
|
|
// CÓMO USAR EN TUS ARCHIVOS PHP
|
|
// ============================================
|
|
|
|
/*
|
|
// En api/upload_media.php (cuando se sube un archivo)
|
|
require_once __DIR__ . '/../classes/NotificationHelper.php';
|
|
|
|
if ($uploadSuccess) {
|
|
NotificationHelper::create(
|
|
$userId,
|
|
'document',
|
|
'Usuario subió: ' . $fileName,
|
|
['file_name' => $fileName, 'file_type' => $fileType]
|
|
);
|
|
}
|
|
|
|
// En api/webhook.php (cuando llega mensaje con palabra clave)
|
|
if (strpos($messageText, 'urgente') !== false) {
|
|
NotificationHelper::create(
|
|
$userId,
|
|
'urgent',
|
|
'Mensaje urgente de ' . $userName,
|
|
['message' => $messageText]
|
|
);
|
|
}
|
|
|
|
// En cualquier script que necesite notificar
|
|
require_once __DIR__ . '/classes/NotificationHelper.php';
|
|
|
|
NotificationHelper::create(
|
|
$userId,
|
|
'custom',
|
|
'Tu mensaje aquí',
|
|
['custom_data' => 'value']
|
|
);
|
|
*/
|
|
|
|
// ============================================
|
|
// RESPUESTA AUTOMÁTICA POR SSE
|
|
// ============================================
|
|
// NO necesitas hacer nada más, el helper automáticamente:
|
|
// 1. Inserta la notificación en la tabla notifications
|
|
// 2. Envía el evento por SSE a todos los operadores conectados
|
|
// 3. El cliente en conversations.php recibe el evento 'notification'
|
|
// 4. Se muestra el toast de notificación automáticamente
|
|
|
|
echo "✅ NotificationHelper listo para usar\n";
|
|
echo "📖 Ver ejemplos en este archivo\n";
|
|
echo "🔔 Las notificaciones se envían automáticamente por SSE\n";
|