/// <summary> /// Beim Starten des Programmes werden alle Parkhaus-Daten / Einträge aus der Datenbank in die Parkhausliste der Klasse übertragen, /// damit sie vom letzten Programmablauf wieder zur Verfügung stehen. Die Datenbankanbindung wird mithilfe der Programmierschnitttelle /// OLE-DB implementiert, wobei unterschiedliche Datenbankabfragen ausgeführt werden können. /// </summary> /// <param name="connectionString"></param> public void datenAusDatenbankAuslesen(String connectionString) { OleDbCommand cmd; DataSet dataSet = new DataSet(); String plz, ort, parkhausnummer, stellplatznummer, stellplatztyp, istBelegt, kennzeichen; int anzahlPKW, anzahlMotorrad, anzahlLKW; /// SQL-Abfragen zur Wiederherestellung der bereits vorhandenen Parkhäuser und Stellplätze in der Datenbank String parkhaus_query = "SELECT plz, ort, parkhausnummer, anzahlPKW, anzahlMotorrad, anzahlLKW FROM parkhausliste"; String stellplatz_query = "SELECT parkhausnummer, stellplatznummer, stellplatztyp, istBelegt, kennzeichen FROM stellplatzliste"; try { using (OleDbConnection connection = new OleDbConnection(connectionString)) { using (cmd = new OleDbCommand(parkhaus_query, connection)) { connection.Open(); OleDbDataReader reader = cmd.ExecuteReader(); /// Auslesen aller Parkhauseinträge aus der Datenbank zur Wiederherstellung der Daten while (reader.Read()) { plz = reader["plz"].ToString(); ort = reader["ort"].ToString(); parkhausnummer = reader["parkhausnummer"].ToString(); anzahlPKW = Int32.Parse(reader["anzahlPKW"].ToString()); anzahlMotorrad = Int32.Parse(reader["anzahlMotorrad"].ToString()); anzahlLKW = Int32.Parse(reader["anzahlLKW"].ToString()); Parkhaus parkhaus = new Parkhaus(ort, plz, parkhausnummer, anzahlPKW, anzahlMotorrad, anzahlLKW); parkhausliste.Add(parkhaus); } reader.Close(); } using (cmd = new OleDbCommand(stellplatz_query, connection)) { OleDbDataReader reader = cmd.ExecuteReader(); foreach (Parkhaus parkhaus in parkhausliste) { parkhaus.Stellplatzliste.Clear(); } /// Auslesen aller Stellplatzeinträge aus der Datenbank zur Wiederherstellung der Daten while (reader.Read()) { parkhausnummer = reader["parkhausnummer"].ToString(); stellplatznummer = reader["stellplatznummer"].ToString(); stellplatztyp = reader["stellplatztyp"].ToString(); istBelegt = reader["istbelegt"].ToString(); kennzeichen = reader["kennzeichen"].ToString(); Stellplatz stellplatz = new Stellplatz(stellplatznummer, stellplatztyp, Boolean.Parse(istBelegt), parkhausnummer); stellplatz.Kennzeichen = kennzeichen; foreach (Parkhaus parkhaus in parkhausliste) { if (parkhaus.Parkhausnummer.Equals(parkhausnummer)) { parkhaus.Stellplatzliste.Add(stellplatz); break; } } } reader.Close(); } connection.Close(); } } catch (Exception ex) { throw new Exception("Inhalt konnte nicht geladen werden"); } }
public async void Start() { mqttClient = new MqttFactory().CreateMqttClient(); var options = new MqttClientOptionsBuilder() // Set client ID for app .WithClientId(str_ClientID) // Set ip adress & port to send messages to .WithTcpServer(str_IpAdress, Convert.ToInt32(str_PortAdress)) .WithWillMessage(new MqttApplicationMessageBuilder().WithTopic("Died").WithPayload($"{str_ClientID} ist Tot!! :(").Build()) .WithCleanSession() .Build(); await mqttClient.ConnectAsync(options); // Logic for Client mqttClient.ApplicationMessageReceived += (s, e) => { Console.WriteLine("### RECEIVED APPLICATION MESSAGE ###"); Console.WriteLine($"+ ClientID = {e.ClientId}"); Console.WriteLine($"+ Topic = {e.ApplicationMessage.Topic}"); Console.WriteLine($"+ Payload = {Encoding.UTF8.GetString(e.ApplicationMessage.Payload)}"); Console.WriteLine($"+ QoS = {e.ApplicationMessage.QualityOfServiceLevel}"); Console.WriteLine($"+ Retain = {e.ApplicationMessage.Retain}"); // Get Credentials string str_TmpPayload = Encoding.UTF8.GetString(e.ApplicationMessage.Payload); string[] str_ClientIdSender = str_TmpPayload.Split(';'); // Topic REGISTER if (e.ApplicationMessage.Topic == "Register" && str_ClientIdSender[0] != this.str_ClientID) { // Get all available Displays List <Stellplatz> __Stellplatz = DataController.ReturnStellplatz(); // Tmp bool bool bool_IsRegistered = false; foreach (Stellplatz Item in __Stellplatz) { if (Item.str_Bezeichnung == str_ClientIdSender[0]) { bool_IsRegistered = true; Message _msg = new Message(); _msg.str_TopicName = "AknowledgeRegister"; _msg._Message = Item.str_Bezeichnung; publish(_msg); // Reasign price after restart foreach (StellplatzArtikel Items in DataController.ReturnStellplatzArtikel()) { if (Item.int_Id == Items.int_StellplatzID) { _msg.str_TopicName = Item.str_Bezeichnung; foreach (Live_Artikel article in DataController.ReturnLiveArtikel()) { if (article.int_ID == Items.int_ArtikelID) { _msg._Message = article.dbl_SellPrice.ToString(); Thread.Sleep(250); publish(_msg); } } } } } } // Check if exists if (!bool_IsRegistered) { Stellplatz _Stellplatz = new Stellplatz(); // Generate unique client_Id _Stellplatz.str_Bezeichnung = CreateClientId(str_ClientIdSender[0]); _Stellplatz.str_MacAdress = str_ClientIdSender[1]; _Stellplatz.Insert(); DataController.CreateDataLayer(); bool_IsRegistered = false; Message _msg = new Message(); _msg.str_TopicName = "AknowledgeRegister"; _msg._Message = _Stellplatz.str_Bezeichnung; SubscribeAsync(_msg); publish(_msg); _msg.str_TopicName = _Stellplatz.str_Bezeichnung + "/delete"; SubscribeAsync(_msg); } } }; }