private void monitorear() { try { Logger.Log("Monitoreo iniciado."); string queryAlertas = "SELECT nombre, id_satelital, alerta_id, umbral_nivel_verde, umbral_nivel_amarilla," + " umbral_nivel_roja, umbral_lluvia_verde, umbral_lluvia_amarilla " + "FROM" + "(" + " SELECT nombre, id_satelital, alerta_id" + " FROM SAT.Estaciones" + " WHERE activa = 1 AND alerta_id IS NOT NULL" + ") AS e " + "INNER JOIN (" + " SELECT id, umbral_nivel_verde, umbral_nivel_amarilla, umbral_nivel_roja, " + " umbral_lluvia_verde, umbral_lluvia_amarilla" + " FROM SAT.alertas" + ") AS a ON a.id = e.alerta_id;"; string queryDatos; MySqlConnection con; MySqlCommand cmd; MySqlDataReader rdrMonitoreo; System.Collections.ArrayList alertasEstaciones; alerta alertaEstacion; while (true) { con = new MySqlConnection(Properties.Resources.MySqlConn); cmd = new MySqlCommand(queryAlertas, con); if (con.State != System.Data.ConnectionState.Open) { con.Open(); Logger.Log("Conexion a BD abierta"); } rdrMonitoreo = cmd.ExecuteReader(); Logger.Log("Query de estaciones y alertas ejecutado"); string ids = ""; alertasEstaciones = new System.Collections.ArrayList(50); Logger.Log("Preparando para leer estaciones"); while (rdrMonitoreo.Read()) { alertaEstacion = new alerta(rdrMonitoreo.GetString("id_satelital")); //alertaEstacion.idSatelital = ; alertaEstacion.nombre = rdrMonitoreo.GetString("nombre"); alertaEstacion.idAlerta = rdrMonitoreo.GetUInt32("alerta_id"); alertaEstacion.uNivelVerde = rdrMonitoreo.IsDBNull(3) ? -1.0 : rdrMonitoreo.GetDouble("umbral_nivel_verde"); alertaEstacion.uNivelAmarilla = rdrMonitoreo.IsDBNull(4) ? -1.0 : rdrMonitoreo.GetDouble("umbral_nivel_amarilla"); alertaEstacion.uNivelRoja = rdrMonitoreo.IsDBNull(5) ? -1.0 : rdrMonitoreo.GetDouble("umbral_nivel_roja"); alertaEstacion.uLluviaVerde = rdrMonitoreo.IsDBNull(6) ? -1.0 : rdrMonitoreo.GetDouble("umbral_lluvia_verde"); alertaEstacion.uLluviaAmarilla = rdrMonitoreo.IsDBNull(7) ? -1.0 : rdrMonitoreo.GetDouble("umbral_lluvia_amarilla"); alertasEstaciones.Add(alertaEstacion); ids += "'" + alertaEstacion.idSatelital + "',"; } Logger.Log("Datos de estaciones leidos"); rdrMonitoreo.Close(); queryDatos = "SELECT sta.SATELLITE_ID, dat.*, d.ED_VALUE " + "FROM xc_data.xc_data1 as d " + "INNER JOIN " + "( " + "SELECT STATION_ID, MAX(TIME_TAG) AS TIME_TAG, SENSORNAME " + "FROM xc_data.xc_data1 " + "WHERE SENSORNAME IN ('LLUVIA', 'NIVEL') " + "GROUP BY STATION_ID, SENSORNAME " + ") as dat on dat.TIME_TAG = d.TIME_TAG AND dat.STATION_ID = d.STATION_ID AND d.SENSORNAME = dat.SENSORNAME " + "INNER JOIN " + "( " + " SELECT STATION_ID, SATELLITE_ID " + " FROM xc_data.xc_sites " + //"-- \" WHERE SATELLITE_ID IN ('5042B196', '5045D644', '504484C2', '5042977A', '50469240', '50439580', '5040E41E')" + " WHERE SATELLITE_ID IN (" + ids.Substring(0, ids.Length - 1) + ") " + ") as sta ON sta.STATION_ID = dat.STATION_ID;"; cmd.CommandText = queryDatos; rdrMonitoreo = cmd.ExecuteReader(); Logger.Log("Query de datos ejectuado"); Logger.Log("Leyendo datos"); while (rdrMonitoreo.Read()) { int idx = alertasEstaciones.IndexOf(new alerta(rdrMonitoreo.GetString("SATELLITE_ID"))); string msg = ""; switch (rdrMonitoreo.GetString("SENSORNAME")) { case "NIVEL": if (rdrMonitoreo.GetDouble("ED_VALUE") >= ((alerta)(alertasEstaciones[idx])).uNivelRoja) { /*System.Windows.Forms.MessageBox.Show( "ALERTA ROJA!\n" + "Estación: " + rdrMonitoreo.GetString("STATION_ID") + "\n" + "Sensor: " + rdrMonitoreo.GetString("SENSORNAME") + "\n" + "Umbral:" + ((alerta)(alertasEstaciones[idx])).uNivelRoja.ToString() + "\n" + "Valor: " + rdrMonitoreo.GetDouble("ED_VALUE").ToString() + "\n" + "Fecha/Hora: " + rdrMonitoreo.GetString("TIME_TAG") + "\n", "ALERTA!!!");*/ msg = "ALERTA ROJA!\n" + "Estación: " + rdrMonitoreo.GetString("STATION_ID") + "\n" + "Sensor: " + rdrMonitoreo.GetString("SENSORNAME") + "\n" + "Umbral:" + ((alerta)(alertasEstaciones[idx])).uNivelRoja.ToString() + "\n" + "Valor: " + rdrMonitoreo.GetDouble("ED_VALUE").ToString() + "\n" + "Fecha/Hora: " + rdrMonitoreo.GetString("TIME_TAG") + "\n"; } else if (rdrMonitoreo.GetDouble("ED_VALUE") >= ((alerta)(alertasEstaciones[idx])).uNivelAmarilla) { /*System.Windows.Forms.MessageBox.Show( "ALERTA AMARILLA!\n" + "Estación: " + rdrMonitoreo.GetString("STATION_ID") + "\n" + "Sensor: " + rdrMonitoreo.GetString("SENSORNAME") + "\n" + "Umbral:" + ((alerta)(alertasEstaciones[idx])).uNivelAmarilla.ToString() + "\n" + "Valor: " + rdrMonitoreo.GetDouble("ED_VALUE").ToString() + "\n" + "Fecha/Hora: " + rdrMonitoreo.GetString("TIME_TAG") + "\n", "ALERTA!!!");*/ msg = "ALERTA AMARILLA!\n" + "Estación: " + rdrMonitoreo.GetString("STATION_ID") + "\n" + "Sensor: " + rdrMonitoreo.GetString("SENSORNAME") + "\n" + "Umbral:" + ((alerta)(alertasEstaciones[idx])).uNivelAmarilla.ToString() + "\n" + "Valor: " + rdrMonitoreo.GetDouble("ED_VALUE").ToString() + "\n" + "Fecha/Hora: " + rdrMonitoreo.GetString("TIME_TAG") + "\n"; } else if (rdrMonitoreo.GetDouble("ED_VALUE") >= ((alerta)(alertasEstaciones[idx])).uNivelVerde) { /*System.Windows.Forms.MessageBox.Show( "ALERTA VERDE!\n" + "Estación: " + rdrMonitoreo.GetString("STATION_ID") + "\n" + "Sensor: " + rdrMonitoreo.GetString("SENSORNAME") + "\n" + "Umbral:" + ((alerta)(alertasEstaciones[idx])).uNivelVerde.ToString() + "\n" + "Valor: " + rdrMonitoreo.GetDouble("ED_VALUE").ToString() + "\n" + "Fecha/Hora: " + rdrMonitoreo.GetString("TIME_TAG") + "\n", "ALERTA!!!");**/ msg = "ALERTA VERDE!\n" + "Estación: " + rdrMonitoreo.GetString("STATION_ID") + "\n" + "Sensor: " + rdrMonitoreo.GetString("SENSORNAME") + "\n" + "Umbral:" + ((alerta)(alertasEstaciones[idx])).uNivelVerde.ToString() + "\n" + "Valor: " + rdrMonitoreo.GetDouble("ED_VALUE").ToString() + "\n" + "Fecha/Hora: " + rdrMonitoreo.GetString("TIME_TAG") + "\n"; } if (msg != "") { Logger.Log(msg); Dictionary<string, string[]> dict = getContactos(((alerta)(alertasEstaciones[idx])).idAlerta); //Correos foreach (string dir in dict["Correos"]) { try { if (dir != null) { Cartero.enviarCorreo(dir, msg); Logger.Log("Envio de alerta por correo a " + dir); } } catch (Exception ex) { Logger.Log("Error: " + ex.Message + "@-> " + dir); } } //Sms foreach (string tel in dict["Sms"]) { try { if (tel != null) { //Mensajero.enviarMensaje(tel, msg); Logger.Log("Envio de alerta por SMS a " + tel); } } catch (Exception ex) { Logger.Log("Error: " + ex.Message + "@-> " + tel); } } //Llamadas foreach (string tel in dict["Llamadas"]) { try { if (tel != null) { //Operadora.Llamar(tel, msg); Logger.Log("Envio de alerta por Teléfono a " + tel); } } catch (Exception ex) { Logger.Log("Error: " + ex.Message + "@-> " + tel); } } } break; case "LLUVIA": /* if (rdrMonitoreo.GetDouble("ED_VALUE") >= ((alerta)(alertasEstaciones[idx])).uLluviaVerde) { System.Windows.Forms.MessageBox.Show( "ALERTA ROJA!\n" + "Estación: " + rdrMonitoreo.GetString("STATION_ID") + "\n" + "Sensor: " + rdrMonitoreo.GetString("SENSORNAME") + "\n" + "Umbral:" + ((alerta)(alertasEstaciones[idx])).uNivelRoja.ToString() + "\n" + "Valor: " + rdrMonitoreo.GetDouble("ED_VALUE").ToString() + "\n" + "Fecha/Hora: " + rdrMonitoreo.GetString("TIME_TAG") + "\n", "ALERTA!!!"); } else if (rdrMonitoreo.GetDouble("ED_VALUE") >= ((alerta)(alertasEstaciones[idx])).uLluviaAmarilla) { System.Windows.Forms.MessageBox.Show( "ALERTA AMARILLA!\n" + "Estación: " + rdrMonitoreo.GetString("STATION_ID") + "\n" + "Sensor: " + rdrMonitoreo.GetString("SENSORNAME") + "\n" + "Umbral:" + ((alerta)(alertasEstaciones[idx])).uNivelAmarilla.ToString() + "\n" + "Valor: " + rdrMonitoreo.GetDouble("ED_VALUE").ToString() + "\n" + "Fecha/Hora: " + rdrMonitoreo.GetString("TIME_TAG") + "\n", "ALERTA!!!"); }*/ break; } } rdrMonitoreo.Close(); if (con.State == System.Data.ConnectionState.Open) { con.Close(); } Logger.Log("Datos leidos. A dormir " + Parametros.Intervalo.ToString("HH:mm:ss") + " ..."); Thread.Sleep( new TimeSpan( Parametros.Intervalo.Hour, Parametros.Intervalo.Minute, Parametros.Intervalo.Second ) ); } } catch (ThreadAbortException abortEx) { Logger.Log("Monitoreo detenido."); Logger.Log(abortEx.Message); return; } catch (ThreadInterruptedException interruptEx) { Logger.Log("Despertando..."); mon = new Thread(this.monitorear); mon.Start(); return; } catch (MySqlException mySqlEx) { Logger.Log("Error en el monitoreo: " + mySqlEx.Message); return; } catch (Exception Ex) { Logger.Log("Error en el monitoreo: " + Ex.Message); return; } }
private void crearCiudad_Click(object sender, RoutedEventArgs e) { if (this.textCiudad.Text != "") { if (this.ciudades.ContainsKey(this.textCiudad.Text) == false) { if (this.comboRegion.SelectedIndex > -1) { string nombre = (string)this.textCiudad.Text; int numero = (int)this.comboRegion.SelectedIndex; // OBTENER NUMERO REGION BY REGION try { //btenerNumeroCiudadByRegion(comboRegion.Text) MySqlConnection con = conexionDB.ObtenerConexion(); string insertString = "INSERT INTO CIUDAD (NOMBRE,REGION,NUMERO) VALUES (?nombre,?region,?numero)"; MySqlCommand cmd = new MySqlCommand(insertString, con); cmd.Parameters.Add("?nombre", nombre); cmd.Parameters.Add("?region", comboRegion.Text); cmd.Parameters.Add("?numero", obtenerNumeroCiudadByRegion(comboRegion.Text)); cmd.ExecuteNonQuery(); con.Close(); textCiudad.Text = ""; comboRegion.SelectedIndex = -1; alerta alert = new alerta(); alert.show("Ciudad Ingresada Correctamente"); try { con.Open(); this.ciudades.Clear(); this.listCiudad.Items.Clear(); string sql = "SELECT C.ID, C.NOMBRE FROM CIUDAD AS C INNER JOIN REGION AS R ON (C.NUMERO=R.ID) ORDER BY R.ID"; cmd = new MySqlCommand(sql, con); MySqlDataReader dr = cmd.ExecuteReader(); while (dr.Read()) { ciudades.Add(dr.GetString(1), dr.GetInt32(0)); this.listCiudad.Items.Add(dr.GetString(1)); } dr.Close(); con.Close(); } catch (Exception ex) { validar alerta = new validar(); alerta.show("LISTAR CIUDAD: " + ex.ToString()); } } catch (Exception ex) { validar alert = new validar(); alert.show("INGRESA CIUDAD: " + ex.ToString()); } finally { //con.Close(); } } else { validar alert = new validar(); alert.show("Debe seleccionar una Region"); this.comboRegion.Focus(); } } else { validar alert = new validar(); alert.show("La ciudad ingresada ya existe"); this.textCiudad.Focus(); } } else { validar alert = new validar(); alert.show("Debe ingresar un nombre para la Parada"); this.textCiudad.Focus(); } }