From 47e5f6927f6fbd76262edf89fd30d8958f0727b6 Mon Sep 17 00:00:00 2001 From: Robert Richter Date: Sun, 5 May 2019 22:14:41 +0200 Subject: [PATCH] Fehlerbehebungen --- server/sql_qry.js | 83 +++++++++++++++++++++++++++++------------------ server/waip_io.js | 3 +- 2 files changed, 54 insertions(+), 32 deletions(-) diff --git a/server/sql_qry.js b/server/sql_qry.js index 8fc2461..690967d 100644 --- a/server/sql_qry.js +++ b/server/sql_qry.js @@ -17,17 +17,29 @@ module.exports = function(db, async, app_cfg) { reset_counter FROM waip_configs WHERE user_id = ` + user_id + `)`; }; // Einsätze für die gewählte Wachen_ID ermittel, und Ablaufzeit beachten + console.log(`SELECT waip_einsaetze_ID FROM + ( + SELECT em.waip_einsaetze_ID, we.zeitstempel FROM waip_einsatzmittel em + LEFT JOIN waip_wachen wa ON wa.id = em.waip_wachen_id + LEFT JOIN waip_einsaetze we ON we.id = em.waip_einsaetze_ID + WHERE wa.nr_wache LIKE \'` + wachen_id + `\'||\'%\' + GROUP BY em.waip_einsaetze_id + ORDER BY em.waip_einsaetze_id DESC + ) + WHERE DATETIME(zeitstempel, \'+\' || ` + select_reset_counter + ` || \' minutes\') + > DATETIME(\'now\')`); + db.all(`SELECT waip_einsaetze_ID FROM ( - SELECT em.waip_einsaetze_id, we.zeitstempel FROM waip_einsatzmittel em + SELECT em.waip_einsaetze_ID, we.zeitstempel FROM waip_einsatzmittel em LEFT JOIN waip_wachen wa ON wa.id = em.waip_wachen_id LEFT JOIN waip_einsaetze we ON we.id = em.waip_einsaetze_ID WHERE wa.nr_wache LIKE ?||\'%\' GROUP BY em.waip_einsaetze_id ORDER BY em.waip_einsaetze_id DESC ) - WHERE DATETIME(zeitstempel, \'+\' || ? || \' minutes\') - > DATETIME(\'now\')`, [wachen_id, select_reset_counter], + WHERE DATETIME(zeitstempel, \'+\' || ` + select_reset_counter + ` || \' minutes\') + > DATETIME(\'now\')`, [wachen_id], function(err, rows) { if (err == null && rows.length > 0) { //callback && callback(row.waip_einsaetze_ID); ALT @@ -261,7 +273,7 @@ module.exports = function(db, async, app_cfg) { }); }; - function db_get_einsatzdaten(waip_id, wachen_nr, callback) { + function db_get_einsatzdaten(waip_id, wachen_nr, user_id, callback) { // vorsichtshalber nochmals id pruefen if (isNaN(waip_id) || isNaN(wachen_nr)) { callback && callback(null); @@ -274,24 +286,34 @@ module.exports = function(db, async, app_cfg) { if (parseInt(wachen_nr) == 0) { wachen_nr = '%' }; + if (isNaN(user_id)) { + user_id = app_cfg.global.default_time_for_standby; + }; // je nach laenge andere SQL ausfuehren - db.get('SELECT e.EINSATZART, e.STICHWORT, e.SONDERSIGNAL, e.OBJEKT, e.ORT,e.ORTSTEIL, e.STRASSE, e.BESONDERHEITEN, e.wgs84_x, e.wgs84_y, em1.EM_ALARMIERT, em0.EM_WEITERE ' + - 'FROM WAIP_EINSAETZE e ' + - 'LEFT JOIN (' + - 'SELECT waip_einsaetze_id, \'[\' || group_concat(\'{\"name\": \"\' || einsatzmittel || \'\", \"zeit\": \"\' || zeitstempel || \'\"}\') || \']\' AS em_alarmiert ' + - 'FROM WAIP_EINSATZMITTEL WHERE waip_einsaetze_id = ? and waip_wachen_id in ( ' + - 'select id from waip_wachen where nr_wache like ?||\'%\') ' + - 'GROUP BY waip_einsaetze_id ' + - ') em1 ON em1.waip_einsaetze_id = e.ID ' + - 'LEFT JOIN (' + - 'SELECT waip_einsaetze_id, \'[\' || group_concat(\'{\"name\": \"\' || einsatzmittel || \'\", \"zeit\": \"\' || zeitstempel || \'\"}\') || \']\' AS em_weitere ' + - 'FROM waip_einsatzmittel WHERE waip_einsaetze_id = ? and waip_wachen_id not in ( ' + - 'select id from waip_wachen where nr_wache like ?||\'%\') ' + - 'GROUP BY waip_einsaetze_id ' + - ') em0 ON em0.waip_einsaetze_id = e.ID ' + - 'WHERE e.id LIKE ? ' + - 'ORDER BY e.id DESC LIMIT 1', [waip_id, wachen_nr, waip_id, wachen_nr, waip_id], - function(err, row) { + db.get(`SELECT + DATETIME(e.zeitstempel, 'localtime') zeitstempel, + DATETIME(e.zeitstempel, '+' || ( + SELECT COALESCE(MAX(reset_counter), ?) reset_counter FROM waip_configs WHERE user_id = ? + ) || ' minutes', 'localtime') ablaufzeit, + e.EINSATZART, e.STICHWORT, e.SONDERSIGNAL, e.OBJEKT, e.ORT,e.ORTSTEIL, e.STRASSE, + e.BESONDERHEITEN, e.wgs84_x, e.wgs84_y, em1.EM_ALARMIERT, em0.EM_WEITERE + FROM WAIP_EINSAETZE e + LEFT JOIN ( + SELECT waip_einsaetze_id, \'[\' || group_concat(\'{\"name\": \"\' || einsatzmittel || \'\", \"zeit\": \"\' || zeitstempel || \'\"}\') || \']\' AS em_alarmiert + FROM WAIP_EINSATZMITTEL WHERE waip_einsaetze_id = ? and waip_wachen_id in ( + select id from waip_wachen where nr_wache like ?||\'%\') + GROUP BY waip_einsaetze_id + ) em1 ON em1.waip_einsaetze_id = e.ID + LEFT JOIN ( + SELECT waip_einsaetze_id, \'[\' || group_concat(\'{\"name\": \"\' || einsatzmittel || \'\", \"zeit\": \"\' || zeitstempel || \'\"}\') || \']\' AS em_weitere + FROM waip_einsatzmittel WHERE waip_einsaetze_id = ? and waip_wachen_id not in ( + select id from waip_wachen where nr_wache like ?||\'%\') + GROUP BY waip_einsaetze_id + ) em0 ON em0.waip_einsaetze_id = e.ID + WHERE e.id LIKE ? + ORDER BY e.id DESC LIMIT 1`, + [app_cfg.global.default_time_for_standby, user_id, waip_id, wachen_nr, waip_id, wachen_nr, waip_id], function(err, row) { + console.log(row); if (err == null && row) { callback && callback(row); } else { @@ -354,7 +376,7 @@ module.exports = function(db, async, app_cfg) { var user_agent = socket.request.headers['user-agent']; var client_ip = socket.request.connection.remoteAddress; var reset_timestamp = socket.request.user.reset_counter; - if (isNaN(client_status)) { + if (isNaN(client_status) || client_status == null) { client_status = 'Standby'; }; if (typeof user_name === "undefined") { @@ -366,15 +388,14 @@ module.exports = function(db, async, app_cfg) { if (typeof reset_timestamp === "undefined") { reset_timestamp = app_cfg.global.default_time_for_standby; }; - db.run('UPDATE waip_clients ' + - 'SET client_status=\'' + client_status + '\', ' + - 'client_ip=\'' + client_ip + '\', ' + - //'room_name=\'' + room_name + '\', ' + - 'user_name=\'' + user_name + '\', ' + - 'user_permissions=\'' + user_permissions + '\', ' + - 'user_agent=\'' + user_agent + '\', ' + - 'reset_timestamp=(select DATETIME(zeitstempel,\'+\' || ' + reset_timestamp + ' || \' minutes\') from waip_einsaetze where id = ' + client_status + ') ' + - 'WHERE socket_id=\'' + socket_id + '\''); + db.run(`UPDATE waip_clients + SET client_status=\'` + client_status + `\', + client_ip=\'` + client_ip + `\', + user_name=\'` + user_name + `\', + user_permissions=\'` + user_permissions + `\', + user_agent=\'` + user_agent + `\', + reset_timestamp=(select DATETIME(zeitstempel,\'+\' || ` + reset_timestamp + ` || \' minutes\') from waip_einsaetze where id =\'` + client_status + `\') + WHERE socket_id=\'` + socket_id + `\'`); }; function db_check_client_waipid(socketId, waip_id, callback) { diff --git a/server/waip_io.js b/server/waip_io.js index 34d9d03..b278145 100644 --- a/server/waip_io.js +++ b/server/waip_io.js @@ -23,6 +23,7 @@ module.exports = function(io, sql, async, app_cfg) { // prüfen ob für diese Wache ein Einsatz vorhanden ist sql.db_einsatz_vorhanden(wachen_id, socket.request.user.id, function(result_einsatz) { if (result_einsatz) { + console.log(result_einsatz[0].waip_einsaetze_ID); sql.db_log('WAIP', 'Einsatz ' + result_einsatz[0].waip_einsaetze_ID + ' fuer Wache ' + wachen_id + ' vorhanden'); //letzten Einsatz verteilen einsatz_verteilen(result_einsatz[0].waip_einsaetze_ID, socket.id, wachen_id); @@ -72,7 +73,7 @@ module.exports = function(io, sql, async, app_cfg) { // Einsatz an Client verteilen function einsatz_verteilen(waip_id, socket_id, wachen_nr) { // Einsatzdaten für eine Wache aus Datenbank laden - sql.db_get_einsatzdaten(waip_id, wachen_nr, function(einsatzdaten) { + sql.db_get_einsatzdaten(waip_id, wachen_nr, io.sockets.sockets[socket_id].request.user.id, function(einsatzdaten) { if (einsatzdaten) { // Berechtigung ueberpruefen var permissions = io.sockets.sockets[socket_id].request.user.permissions;