From 404261ca7123b46195af01a228dee681f536cd78 Mon Sep 17 00:00:00 2001 From: Robert Richter Date: Tue, 28 Apr 2020 13:31:01 +0200 Subject: [PATCH] update Di 28. Apr 13:31:01 CEST 2020 --- server/socket.js | 33 +++++++++------------------------ server/sql_qry.js | 3 ++- server/waip.js | 30 +++++++++++++++++++++++++++++- 3 files changed, 40 insertions(+), 26 deletions(-) diff --git a/server/socket.js b/server/socket.js index aeca1e8..822f563 100755 --- a/server/socket.js +++ b/server/socket.js @@ -32,8 +32,7 @@ module.exports = function (io, sql, app_cfg, waip) { // Socket-Room beitreiten socket.join(wachen_id, function () { // prüfen ob für diese Wache Einsätze vorhanden sind - var user_id = socket.request.user.id; - sql.db_einsatz_ermitteln(wachen_id, user_id, function (result_einsatz) { + sql.db_einsatz_ermitteln(wachen_id, socket, function (result_einsatz) { if (result_einsatz) { // nur den ersten Einsatz senden, falls mehrere vorhanden sind var waip_id = result_einsatz[0].waip_einsaetze_ID; @@ -59,7 +58,7 @@ module.exports = function (io, sql, app_cfg, waip) { }); // Disconnect socket.on('disconnect', function () { - sql.db_log('DEBUG', 'Alarmmonitor Nr. ' + wachen_id + ' von ' + client_ip + ' (' + socket.id + ') geschlossen.'); + sql.db_log('DEBUG', 'Alarmmonitor von ' + client_ip + ' (' + socket.id + ') geschlossen.'); sql.db_client_delete(socket); }); }); @@ -78,29 +77,15 @@ nsp_dbrd.on('connection', function (socket) { sql.db_log('DEBUG', 'Dashboard ' + uuid + ' von ' + client_ip + ' (' + socket.id + ') aufgerufen.'); // prüfen ob Dashboard/Einsatz vorhanden sql.db_einsatz_uuid_vorhanden(uuid, function(dbrd_uuid) { - // wenn die Wachennummer vorhanden/plausibel dann weiter - if (result) { + // wenn die Wachennummer vorhanden dann weiter + if (dbrd_uuid) { // Socket-Room beitreiten - socket.join(wachen_id, function () { - // prüfen ob für diese Wache Einsätze vorhanden sind - var user_id = socket.request.user.id; - sql.db_einsatz_ermitteln(wachen_id, user_id, function (result_einsatz) { - if (result_einsatz) { - // nur den ersten Einsatz senden, falls mehrere vorhanden sind - var waip_id = result_einsatz[0].waip_einsaetze_ID; - sql.db_log('WAIP', 'Einsatz ' + waip_id + ' für Wache ' + wachen_id + ' vorhanden, wird jetzt an Client ' + socket.id + ' gesendet.'); - //letzten Einsatz verteilen - waip.einsatz_verteilen(waip_id, socket, wachen_id); - //vorhandene Rückmeldungen verteilen - waip.rueckmeldung_verteilen_for_client(waip_id, socket, wachen_id); - } else { - sql.db_log('WAIP', 'Kein Einsatz für Wache ' + wachen_id + ' vorhanden, gehe in Standby'); - // falls kein Einsatz vorhanden ist, dann Standby senden - socket.emit('io.standby', null); - }; - }); + socket.join(dbrd_uuid, function () { + sql.db_log('DBRD', 'Einsatz ' + dbrd_uuid + ' für Dashboard ' + dbrd_uuid + ' vorhanden, wird jetzt an Client ' + socket.id + ' gesendet.'); + //letzten Einsatz verteilen + waip.dbrd_verteilen(dbrd_uuid, socket); // in Statusüberischt speichern - sql.db_update_client_status(socket, null); + sql.db_update_client_status(socket, dbrd_uuid); }); } else { sql.db_log('ERROR', 'Fehler: Dashboard ' + dbrd_uuid + 'nicht (mehr) vorhanden!'); diff --git a/server/sql_qry.js b/server/sql_qry.js index 759d64d..e94e57d 100755 --- a/server/sql_qry.js +++ b/server/sql_qry.js @@ -1,8 +1,9 @@ module.exports = function (db, uuidv4, turf, app_cfg) { // ermittelt den letzten vorhanden Einsatz zu einer Wache - function db_einsatz_ermitteln(wachen_id, user_id, callback) { + function db_einsatz_ermitteln(wachen_id, socket, callback) { var select_reset_counter; + var user_id = socket.request.user.id; var dts = app_cfg.global.default_time_for_standby; // wenn Wachen-ID 0 ist, dann % setzen if (parseInt(wachen_id) == 0) { diff --git a/server/waip.js b/server/waip.js index b194d84..72b1215 100755 --- a/server/waip.js +++ b/server/waip.js @@ -239,8 +239,9 @@ module.exports = function (io, sql, tw, async, app_cfg) { // alle User-Einstellungen prüfen und ggf. Standby senden sql.db_get_sockets_to_standby(function (socket_ids) { if (socket_ids) { + console.log() socket_ids.forEach(function (row) { - var socket = io.sockets.sockets[row.socket_id]; + var socket = io.sockets.connected[row.socket_id]; socket.emit('io.standby', null); socket.emit('io.stopaudio', null); sql.db_log('WAIP', 'Standby an Socket ' + socket.id + ' gesendet'); @@ -297,11 +298,38 @@ module.exports = function (io, sql, tw, async, app_cfg) { }) }, 10000); + function dbrd_verteilen(dbrd_uuid, socket) { + sql.db_get_einsatzdaten_by_uuid(dbrd_uuid, function(einsatzdaten) { + if (einsatzdaten) { + sql.db_check_permission(socket.request.user, einsatzdaten.id, function(valid) { + if (!valid) { + delete einsatzdaten.objekt; + delete einsatzdaten.besonderheiten; + delete einsatzdaten.strasse; + delete einsatzdaten.wgs84_x; + delete einsatzdaten.wgs84_y; + }; + socket.emit('io.Einsatz', einsatzdaten); + sql.db_log('DBRD', 'Einsatzdaten für Dashboard' + dbrd_uuid + ' an Socket ' + socket.id + ' gesendet'); + sql.db_update_client_status(socket, waip_id); + }); + } else { + var err = new Error('Der angefragte Einsatz ist nicht - oder nicht mehr - vorhanden!'); + err.status = 404; + next(err); + }; + }); + }; + + + + // TODO: Funktion um Clients "neuzustarten" (Seite remote neu laden) return { einsatz_speichern: einsatz_speichern, einsatz_verteilen: einsatz_verteilen, + dbrd_verteilen: dbrd_verteilen, rueckmeldung_verteilen_for_client: rueckmeldung_verteilen_for_client, reuckmeldung_verteilen_by_uuid: reuckmeldung_verteilen_by_uuid };