public void ManageQueueIncident(string Topic, string PayLoad) { dynamic json = JValue.Parse(PayLoad); DateTime incidentTS = DateTime.Now; string errorMsg = ""; long newId = 0; string message = json.result.description + " From:" + json.result.cameraID; string strLat = json.result.coordinates[1]; string strLon = json.result.coordinates[0];; IO.Swagger.DatabaseInterface.DBIncident dbI = new IO.Swagger.DatabaseInterface.DBIncident(); if (!dbI.AddIncident(message, "CrowdingIncident", "[[" + strLat + "," + strLon + "]]", 4, "ONGOING", 100, PayLoad, incidentTS, "", "", "", "", "", ref errorMsg, ref newId)) { System.Console.WriteLine("Failed to create incident:" + errorMsg); } else { dynamic jmsg = new JObject(); jmsg.type = "newincident"; jmsg.incidentid = newId; jmsg.status = "ONGOING"; jmsg.interventionplan = PayLoad; jmsg.prio = 4; jmsg.timestamp = DateTime.Now; string strMessage = jmsg.ToString(); signalRSend("Incidents", strMessage); } }
/// <summary> /// Mange when a button press is detected on a tracker /// </summary> /// <param name="observation"></param> public void ManageButtonPress(string observation) { //Should be properly fixed later dynamic tmpPayload = JValue.Parse(observation); string tmp = tmpPayload.result; dynamic iPayload = JValue.Parse(tmp); dynamic jmsgC = new JObject(); jmsgC.incidentid = 0; jmsgC.description = "Tracker button pressed"; jmsgC.type = "ButtonPressed"; double lat = iPayload.result.last_known_lat; double lon = iPayload.result.last_known_lon; jmsgC.position = "[[" + lat.ToString().Replace(',', '.') + "," + lon.ToString().Replace(',', '.') + "]]"; jmsgC.prio = 0; jmsgC.status = "ONGOING"; jmsgC.probability = 1.0; jmsgC.interventionplan = ""; jmsgC.incidenttime = iPayload.phenomenonTime; string tmpDate = iPayload.phenomenonTime; DateTime tmpDate2 = DateTime.Parse(tmpDate); jmsgC.wbid = iPayload.result.tagId; jmsgC.telephone = ""; jmsgC.additionalMedia = ""; jmsgC.mediaType = ""; string errorMessage = ""; long newid = -1; //Update database with the new incident IO.Swagger.DatabaseInterface.DBIncident dbO = new IO.Swagger.DatabaseInterface.DBIncident(); if (!dbO.AddIncident((string)jmsgC.description, (string)jmsgC.type, (string)jmsgC.position, 0, "ONGOING", 1.0, "", tmpDate2, (string)jmsgC.wbid, "", (string)jmsgC.additionalMedia, (string)jmsgC.mediaType, "", ref errorMessage, ref newid)) { _logger.LogError("COPUpdater update incident failed {errorMessage}", errorMessage); } //Create and send signalR message dynamic message2 = new JObject(); message2.type = "newincident"; message2.incidentid = newid; message2.status = "ONGOING"; message2.incidenttype = jmsgC.type; message2.prio = 1.0; message2.timestamp = DateTime.Now; message2.mediatype = jmsgC.mediaType; message2.additionalmedia = jmsgC.additionalMedia; message2.wbid = jmsgC.wbid; string strMessage = message2.ToString(); connection.InvokeAsync("Incidents", strMessage).Wait(); }
public void ManageCameraIncident(string Topic, string PayLoad) { dynamic json = JValue.Parse(PayLoad); DateTime incidentTS = DateTime.Now; string cameraID = json.result.cameraid; if (cameraID == "" || cameraID == null) { cameraID = json.result.cameraID; } string errorMsg = ""; long newId = 0; string message = json.result.type + " " + json.result.description + " From:" + cameraID; string strLat = "0.0"; string strLon = "0.0"; IO.Swagger.DatabaseInterface.DBIncident dbI = new IO.Swagger.DatabaseInterface.DBIncident(); if (!dbI.FindCameraCoords(cameraID, ref strLat, ref strLon)) { Console.WriteLine("No matching Camera for:" + json.result.cameraID); return; } double latDiff = 0.0; double lonDiff = 0.0; double lat = double.Parse(strLat, CultureInfo.InvariantCulture); double lon = double.Parse(strLon, CultureInfo.InvariantCulture); CartesianToGeo(4, lat, lon, ref latDiff, ref lonDiff); int randLon = random.Next(-3, 3); int randLat = random.Next(-3, 3); lat += ((double)randLon) * latDiff; lon += ((double)randLat) * lonDiff; dbI = new IO.Swagger.DatabaseInterface.DBIncident(); if (!dbI.AddIncident(message, IncidentType, "[[" + lat.ToString(CultureInfo.InvariantCulture) + "," + lon.ToString(CultureInfo.InvariantCulture) + "]]", 4, "ONGOING", 100, PayLoad, incidentTS, "", "", "", "", "", ref errorMsg, ref newId)) { System.Console.WriteLine("Failed to create incident:" + errorMsg); } else { dynamic jmsg = new JObject(); jmsg.type = "newincident"; jmsg.incidentid = newId; jmsg.status = "ONGOING"; jmsg.interventionplan = PayLoad; jmsg.prio = 4; jmsg.timestamp = DateTime.Now; string strMessage = jmsg.ToString(); signalRSend("Incidents", strMessage); } }
public void ManageEnvironmentIncident(string Topic, string PayLoad) { dynamic json = JValue.Parse(PayLoad); DateTime incidentTS = DateTime.Now; string errorMsg = ""; long newId = 0; string message = json.result.description; string strLat = "0.0"; string strLon = "0.0"; XmlNode xLat = xSensors.SelectSingleNode("//Kalle[ogcid='" + json.result.name + "']/lat"); if (xLat != null) { strLat = xLat.InnerText; } XmlNode xLon = xSensors.SelectSingleNode("//Kalle[ogcid='" + json.result.name + "']/lon"); if (xLon != null) { strLon = xLon.InnerText; } IO.Swagger.DatabaseInterface.DBIncident dbI = new IO.Swagger.DatabaseInterface.DBIncident(); if (!dbI.AddIncident(message, "Wind", "[[" + strLat + "," + strLon + "]]", 4, "ONGOING", 100, PayLoad, incidentTS, "", "", "", "", "", ref errorMsg, ref newId)) { System.Console.WriteLine("Failed to create incident:" + errorMsg); } else { dynamic jmsg = new JObject(); jmsg.type = "newincident"; jmsg.incidentid = newId; jmsg.status = "ONGOING"; jmsg.interventionplan = PayLoad; jmsg.prio = 4; jmsg.timestamp = DateTime.Now; string strMessage = jmsg.ToString(); signalRSend("Incidents", strMessage); } }
public void ManageSoundIncident(string Topic, string PayLoad) { PayLoad = PayLoad.Replace("octave bands", "octavebands"); dynamic json = JValue.Parse(PayLoad); DateTime incidentTS = json.phenomenonTime; string errorMsg = ""; long newId = 0; string message = json.result.ALERT; if (json.result.octavebands != null) { message += " " + json.result.octavebands; } message += " Source:" + json.result.microphoneID; if (json.result.measurement_type != null) { message += " Type:" + json.result.measurement_type; } if (json.result.microphoneType != null) { message += " Type:" + json.result.microphoneType; } IO.Swagger.DatabaseInterface.DBIncident dbI = new IO.Swagger.DatabaseInterface.DBIncident(); if (!dbI.AddIncident(message, "SoundIncident", "", 4, "ONGOING", 100, PayLoad, incidentTS, "", "", "", "", "", ref errorMsg, ref newId)) { System.Console.WriteLine("Failed to create incident:" + errorMsg); } else { dynamic jmsg = new JObject(); jmsg.type = "SoundIncident"; jmsg.incidentid = newId; jmsg.status = "ONGOING"; jmsg.interventionplan = PayLoad; jmsg.prio = 4; jmsg.timestamp = DateTime.Now; string strMessage = jmsg.ToString(); signalRSend("Incidents", strMessage); } }
public void ManageDSSIncident(string Topic, string PayLoad) { if (Topic == "/DSS/Overcrowding") { dynamic json = JValue.Parse(PayLoad); DateTime incidentTS = json.inputDataTimestamp; foreach (dynamic rec in json.recommendations) { string errorMsg = ""; long newId = 0; string strLat = rec.latitude.ToString(); string strLon = rec.longitude.ToString(); string recom = rec.recommendation; IO.Swagger.DatabaseInterface.DBIncident dbI = new IO.Swagger.DatabaseInterface.DBIncident(); if (!dbI.AddIncident("Over crowded area", "OVERCROWDED", "[[" + strLat + "," + strLon + "]]", 4, "ONGOING", 78.5, PayLoad, incidentTS, "", "", "", "", "", ref errorMsg, ref newId)) { System.Console.WriteLine("Failed to create incident:" + errorMsg); } else { dynamic jmsg = new JObject(); jmsg.type = "newincident"; jmsg.incidentid = newId; jmsg.status = "ONGOING"; jmsg.prio = 4; jmsg.timestamp = DateTime.Now; string strMessage = jmsg.ToString(); signalRSend("Incidents", strMessage); } } } else if (Topic == "GOST/Datastreams(43)/Observations") { dynamic json = JValue.Parse(PayLoad); DateTime incidentTS = json.phenomenonTime; string errorMsg = ""; long newId = 0; string strLat = "0.0"; string strLon = "0.0"; string confStr = json.result.confidence; double conf = double.Parse(confStr, CultureInfo.InvariantCulture); conf *= 100; string[] cameraIDs = json.result.camera_ids.ToObject <string[]>(); IO.Swagger.DatabaseInterface.DBIncident dbI = new IO.Swagger.DatabaseInterface.DBIncident(); if (!dbI.FindCameraCoords(cameraIDs[0], ref strLat, ref strLon)) { return; } if (!dbI.AddIncident("Fight Detected", "FIGHT", "[[" + strLat + "," + strLon + "]]", 4, "ONGOING", conf, PayLoad, incidentTS, "", "", "", "", "", ref errorMsg, ref newId)) { System.Console.WriteLine("Failed to create incident:" + errorMsg); } else { dynamic jmsg = new JObject(); jmsg.type = "newincident"; jmsg.incidentid = newId; jmsg.status = "ONGOING"; jmsg.prio = 4; jmsg.timestamp = DateTime.Now; string strMessage = jmsg.ToString(); signalRSend("Incidents", strMessage); } } }
/// <summary> /// Manage an incident report from smart glasses /// </summary> /// <param name="observation">The recieved message</param> public void ManageIncidentReporter(string observation) { dynamic iPayload = JValue.Parse(observation); dynamic jmsgC = new JObject(); /* * { * "incidentid": 0, * "description": "string", * "type": "string", * "position": "string", * "prio": 0, * "status": "string", * "probability": 0, * "interventionplan": "string", * "incidenttime": "2018-12-07T13:20:12.639Z", * "wbid": "string", * "telephone": "string" * } */ jmsgC.incidentid = 0; string reportType = iPayload.result.reportType; if (reportType == "video" || reportType == "picture" || reportType == "audio") { jmsgC.description = reportType + " from " + iPayload.result.tagId; } else { jmsgC.description = iPayload.result.message; } jmsgC.type = "FieldReport"; double lat = iPayload.result.lat; double lon = iPayload.result.lon; jmsgC.position = "[[" + lat.ToString().Replace(',', '.') + "," + lon.ToString().Replace(',', '.') + "]]"; jmsgC.prio = 0; jmsgC.status = "ONGOING"; jmsgC.probability = 1.0; jmsgC.interventionplan = ""; jmsgC.incidenttime = iPayload.phenomenonTime; string tmpDate = iPayload.phenomenonTime; DateTime tmpDate2 = DateTime.Parse(tmpDate); jmsgC.wbid = iPayload.result.tagId; jmsgC.telephone = ""; string temp = iPayload.result.message; string[] split = temp.Split("/"); if (reportType == "video" || reportType == "picture" || reportType == "audio") { jmsgC.additionalMedia = split[split.GetUpperBound(0) - 1] + "/" + split[split.GetUpperBound(0)]; } else { jmsgC.additionalMedia = ""; } jmsgC.mediaType = iPayload.result.reportType; string errorMessage = ""; long newid = -1; //Update database with the new incident IO.Swagger.DatabaseInterface.DBIncident dbO = new IO.Swagger.DatabaseInterface.DBIncident(); if (!dbO.AddIncident((string)jmsgC.description, (string)jmsgC.type, (string)jmsgC.position, 0, "ONGOING", 1.0, "", tmpDate2, (string)jmsgC.wbid, "", (string)jmsgC.additionalMedia, (string)jmsgC.mediaType, "", ref errorMessage, ref newid)) { _logger.LogError("COPUpdater update incident failed {errorMessage}", errorMessage); } //Create and send signalR message dynamic message2 = new JObject(); message2.type = "newincident"; message2.incidentid = newid; message2.status = "ONGOING"; message2.incidenttype = jmsgC.type; message2.prio = 1.0; message2.timestamp = DateTime.Now; message2.mediatype = jmsgC.mediaType; message2.additionalmedia = jmsgC.additionalMedia; message2.wbid = jmsgC.wbid; string strMessage = message2.ToString(); connection.InvokeAsync("Incidents", strMessage).Wait(); }