/// <summary>
 /// Schleust die zu erstellende Nachricht zur Dal durch mit einer Sqltransaction
 /// </summary>
 /// <param name="message">
 /// zu erstellende Nachricht
 /// </param>
 public static void CreateMessage(Message message)
 {
     // Öffnen der Sql-Server-Verbindung
     using (SqlTransaction transaction = ConnectionManager.GetOpenConnection().BeginTransaction())
     {   
         //Zugriffssicht auf díe Datenbank deklarieren und instanzieren
         MessageDal msgDal = new MessageDal();
         //Aufruf der Nachrichterstellenmethode
         msgDal.CreateMessage(message, transaction);
         //Transaktion speichern
         transaction.Commit();
     }
 }
        /// <summary>
        /// Erstellt die Nachricht in der DB
        /// </summary>
        /// <param name="message">
        /// Das zuspeicherende Nachrichtenobjekt
        /// </param>
        /// <param name="transaction">
        /// Sicherung der SQL-Interaktion
        /// </param>
        /// <returns>
        /// Gibt in Byte wieder ob Nachrichten in DB erfolgreich gespeichert wurde
        /// </returns>
        public byte[] CreateMessage(Message message, SqlTransaction transaction)
        {
            //Erstellen und Instanzieren des SQLkommandos
            using (SqlCommand sqlcmd = new SqlCommand(createMessageMethod, transaction.Connection, transaction))
            {
                //Sqlkommandotyp auf Gespeicherte Prozedur setzen
                sqlcmd.CommandType = CommandType.StoredProcedure;
                
                //SQL-Parameter zum SQLkommando hinzufügen
                sqlcmd.Parameters.Add("@sender", SqlDbType.UniqueIdentifier).Value = message.sender;
                sqlcmd.Parameters.Add("@receiver", SqlDbType.UniqueIdentifier).Value = message.receiver;
                sqlcmd.Parameters.Add("@attchment", SqlDbType.VarBinary, message.attchment.Length).Value = message.attchment;
                sqlcmd.Parameters.Add("@Message", SqlDbType.NVarChar, message.messages.Length).Value = message.messages;

                //Ausführen des SQLkommandos
                byte[] result = (byte[])sqlcmd.ExecuteScalar();
                return result;
            }
        }
        /// <summary>
        ///  Holt alle Nachrichten aus der DB
        /// </summary>
        /// <param name="userId">
        /// Alle Nachrichten des angemeldeten Benutzers
        /// </param>
        /// <param name="transaction">
        /// Sicherung der SQL-Interaktion
        /// </param>
        /// <returns>
        /// Gibt eine Liste von Nachrichten zurück
        /// </returns>
        public List<Message> ReadMessage(Guid userId, SqlTransaction transaction)
        {
            //Erstellen und Instanzieren des SQLkommandos
            using (SqlCommand sqlcmd = new SqlCommand(readMessage, transaction.Connection, transaction))
            {
                //Sqlkommandotyp auf Gespeicherte Prozedur setzen
                sqlcmd.CommandType = CommandType.StoredProcedure;

                //SQL-Parameter zum SQLkommando hinzufügen
                sqlcmd.Parameters.Add("@userId", SqlDbType.UniqueIdentifier).Value = userId;

                // Ausführen des SQLkommandos und Speichern des Ergebnis in den Dataadapter
                using (SqlDataAdapter dataApdater = new SqlDataAdapter(sqlcmd))
                {
                    // Dekalarieren der Datentabelle
                    DataTable MessagesTable = new DataTable();
                    
                    // Füllen der Datentabelle mit den Werten aus dem Dataadapter
                    dataApdater.Fill(MessagesTable);

                    //Deklararieren der Liste von Nachrichten
                    List<Message> messageList = new List<Message>();

                    // Durchgehen der Datentabellenreihen
                    foreach (DataRow dr in MessagesTable.Rows)
                    {
                        //Bauen eines Nachrichtenobjekts
                        Message message = new Message();
                        message.id = dr["id"] as int?;
                        message.sender = dr["sender"] as Guid?;
                        message.receiver = dr["receiver"] as Guid?;
                        message.messages = dr["Message"] as string;
                        message.attchment = dr["attchment"] as byte[];
                        message.timeStamp = dr["Timestamp"] as DateTime?;

                        // hinzufügen des Nachrichtenobjekts
                        messageList.Add(message);
                    }

                    //Rückgabe der Nachrichtenliste
                    return messageList;
                }
            }
        }