Actualizar server.js
This commit is contained in:
30
server.js
30
server.js
@@ -2782,28 +2782,20 @@ app.get("/providers/credentials", authMiddleware, async (req, res) => {
|
|||||||
// 3. Obtener resumen de mensajes nuevos para el operario (Globo de Notificación)
|
// 3. Obtener resumen de mensajes nuevos para el operario (Globo de Notificación)
|
||||||
app.get("/worker/notifications", authMiddleware, async (req, res) => {
|
app.get("/worker/notifications", authMiddleware, async (req, res) => {
|
||||||
try {
|
try {
|
||||||
const accountId = req.user.accountId;
|
// Buscamos expedientes donde la fecha del último mensaje de ADMIN sea más reciente que la última lectura del operario
|
||||||
const userId = req.user.sub;
|
|
||||||
|
|
||||||
if (!accountId || !userId) return res.json({ ok: false, unreadCount: 0, serviceIds: [] });
|
|
||||||
|
|
||||||
// Busca expedientes asignados a este operario que tengan mensajes de ADMIN en las últimas 24h
|
|
||||||
const q = await pool.query(`
|
const q = await pool.query(`
|
||||||
SELECT DISTINCT scraped_id
|
SELECT DISTINCT s.id
|
||||||
FROM service_communications
|
FROM scraped_services s
|
||||||
WHERE owner_id = $1
|
JOIN service_communications c ON s.id = c.scraped_id
|
||||||
AND sender_role IN ('admin', 'superadmin')
|
WHERE s.assigned_to = $1
|
||||||
AND created_at > NOW() - INTERVAL '24 hours'
|
AND c.sender_role IN ('admin', 'superadmin')
|
||||||
AND scraped_id IN (SELECT id FROM scraped_services WHERE assigned_to = $2)
|
AND c.is_internal = FALSE
|
||||||
`, [accountId, userId]);
|
AND c.created_at > COALESCE(s.last_chat_read_worker, '2000-01-01')
|
||||||
|
`, [req.user.sub]);
|
||||||
|
|
||||||
res.json({
|
res.json({ ok: true, unreadCount: q.rowCount, serviceIds: q.rows.map(r => r.id) });
|
||||||
ok: true,
|
|
||||||
unreadCount: q.rowCount,
|
|
||||||
serviceIds: q.rows.map(r => r.scraped_id)
|
|
||||||
});
|
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
console.error("Error en notificaciones operario:", e);
|
console.error("Error notificaciones:", e);
|
||||||
res.status(500).json({ ok: false });
|
res.status(500).json({ ok: false });
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|||||||
Reference in New Issue
Block a user