//Registriert einen neuen Benutzer
 public bool Registrieren(Benutzer benutzer)
 {
     using (con = new SqlConnection(constring))
     {
         try
         {
             cmd = new SqlCommand("SELECT Benutzername FROM BenutzerDB", con);
             con.Open();
             reader = cmd.ExecuteReader();
             while (reader.Read())
             {
                 if (benutzer.Username == (string)reader["Benutzername"])
                 {
                     WebOperationContext.Current.OutgoingResponse.StatusCode = System.Net.HttpStatusCode.Conflict;
                     WebOperationContext.Current.OutgoingResponse.StatusDescription = "Benutzername bereits vergeben";
                     return false;
                 }
             }
         }
         catch (Exception)
         {
             WebOperationContext.Current.OutgoingResponse.StatusCode = System.Net.HttpStatusCode.BadRequest;
             return false;
         }
     }
     Guid guid = System.Guid.NewGuid();
     string hpw = Security.HashSHA1(benutzer.Passwort + guid.ToString()); //Hashwert aus Passworthash und GUID wird erstellt
     using (con = new SqlConnection(constring))
     {
         try
         {
             cmd = new SqlCommand("INSERT INTO BenutzerDB (Benutzername, Passwort, Fach1, Fach2, Fach3, Fach4, TestGestartet, TestBeendet, VokabelGeübt, VokabelRichtig, Guid) VALUES (@benutzername, @passwort, @fach1, @fach2, @fach3, @fach4, @testgestartet, @testbeendet, @vokabelgeübt, @vokabelrichtig, @guid)", con);
             cmd.Parameters.AddWithValue("@benutzername", benutzer.Username);
             cmd.Parameters.AddWithValue("@passwort", hpw);
             cmd.Parameters.AddWithValue("@fach1", DateTime.Now.AddDays(-1).ToString());
             cmd.Parameters.AddWithValue("@fach2", DateTime.Now.ToString());
             cmd.Parameters.AddWithValue("@fach3", DateTime.Now.ToString());
             cmd.Parameters.AddWithValue("@fach4", DateTime.Now.ToString());
             cmd.Parameters.AddWithValue("@testgestartet", 0);
             cmd.Parameters.AddWithValue("@testbeendet", 0);
             cmd.Parameters.AddWithValue("@vokabelgeübt", 0);
             cmd.Parameters.AddWithValue("@vokabelrichtig", 0);
             cmd.Parameters.AddWithValue("@guid", guid);
             con.Open();
             cmd.ExecuteNonQuery();
             WebOperationContext.Current.OutgoingResponse.StatusCode = System.Net.HttpStatusCode.OK;
             return true;
         }
         catch (Exception)
         {
             WebOperationContext.Current.OutgoingResponse.StatusCode = System.Net.HttpStatusCode.BadRequest;
             return false;
         }
     }
 }
 //Überprüft die Anmeldedaten eines Benutzers und liefert diesen zurück
 public Benutzer Anmelden(string benutzerid, Benutzer benutzer)
 {
     using (con = new SqlConnection(constring))
     {
         try
         {
             cmd = new SqlCommand("SELECT * FROM BenutzerDB WHERE ID = @benutzerid", con);
             cmd.Parameters.AddWithValue("@benutzerid", Convert.ToInt32(benutzerid));
             con.Open();
             reader = cmd.ExecuteReader();
             Benutzer benutzerNeu = new Benutzer();
             while (reader.Read())
             {
                 if (Security.HashSHA1(benutzer.Passwort + Convert.ToString(reader["Guid"])) == (string)reader["Passwort"])
                 {
                     benutzerNeu.ID = (int)reader["ID"];
                     benutzerNeu.Username = (string)reader["Benutzername"];
                     benutzerNeu.Fach1 = new Fach(1, (string)reader["Fach1"]);
                     benutzerNeu.Fach2 = new Fach(2, (string)reader["Fach2"]);
                     benutzerNeu.Fach3 = new Fach(3, (string)reader["Fach3"]);
                     benutzerNeu.Fach4 = new Fach(4, (string)reader["Fach4"]);
                     benutzerNeu.Statistik = new Teststatistik((int)reader["TestGestartet"], (int)reader["TestBeendet"], (int)reader["VokabelGeübt"], (int)reader["VokabelRichtig"]);
                     WebOperationContext.Current.OutgoingResponse.StatusCode = System.Net.HttpStatusCode.OK;
                 }
                 else
                 {
                     WebOperationContext.Current.OutgoingResponse.StatusCode = System.Net.HttpStatusCode.BadRequest;
                     WebOperationContext.Current.OutgoingResponse.StatusDescription = "Passwort falsch!";
                 }
             }
             return benutzerNeu;
         }
         catch (Exception ex)
         {
             WebOperationContext.Current.OutgoingResponse.StatusDescription = ex.Message;
             return new Benutzer();
         }
     }
 }
 //Liefert alle Benutzer
 public List<Benutzer> GetAllBenutzer()
 {
     using (con = new SqlConnection(constring))
     {
         try
         {
             cmd = new SqlCommand("SELECT * FROM BenutzerDB", con);
             con.Open();
             reader = cmd.ExecuteReader();
             List<Benutzer> BenutzerAlle = new List<Benutzer>();
             while (reader.Read())
             {
                 Benutzer benutzerNeu = new Benutzer();
                 benutzerNeu.ID = (int)reader["ID"];
                 benutzerNeu.Username = (string)reader["Benutzername"];
                 benutzerNeu.Fach1 = new Fach(1, (string)reader["Fach1"]);
                 benutzerNeu.Fach2 = new Fach(2, (string)reader["Fach2"]);
                 benutzerNeu.Fach3 = new Fach(3, (string)reader["Fach3"]);
                 benutzerNeu.Fach4 = new Fach(4, (string)reader["Fach4"]);
                 benutzerNeu.Statistik = new Teststatistik((int)reader["TestGestartet"], (int)reader["TestBeendet"], (int)reader["VokabelGeübt"], (int)reader["VokabelRichtig"]);
                 BenutzerAlle.Add(benutzerNeu);
             }
             WebOperationContext.Current.OutgoingResponse.StatusCode = System.Net.HttpStatusCode.OK;
             return BenutzerAlle;
         }
         catch (Exception e)
         {
             WebOperationContext.Current.OutgoingResponse.StatusDescription = e.Message;
             return new List<Benutzer>();
         }
     }
 }
 //Liefert einen bestimmten Benutzer
 public Benutzer GetBenutzer(string benutzerid)
 {
     using (con = new SqlConnection(constring))
     {
         try
         {
             cmd = new SqlCommand("SELECT * FROM BenutzerDB WHERE ID = @benutzerid", con);
             cmd.Parameters.AddWithValue("@benutzerid", Convert.ToInt32(benutzerid));
             con.Open();
             reader = cmd.ExecuteReader();
             Benutzer benutzerNeu = new Benutzer();
             while (reader.Read())
             {
                 benutzerNeu.ID = (int)reader["ID"];
                 benutzerNeu.Username = (string)reader["Benutzername"];
                 benutzerNeu.Fach1 = new Fach(1, (string)reader["Fach1"]);
                 benutzerNeu.Fach2 = new Fach(2, (string)reader["Fach2"]);
                 benutzerNeu.Fach3 = new Fach(3, (string)reader["Fach3"]);
                 benutzerNeu.Fach4 = new Fach(4, (string)reader["Fach4"]);
                 benutzerNeu.Statistik = new Teststatistik((int)reader["TestGestartet"], (int)reader["TestBeendet"], (int)reader["VokabelGeübt"], (int)reader["VokabelRichtig"]);
             }
             WebOperationContext.Current.OutgoingResponse.StatusCode = System.Net.HttpStatusCode.OK;
             return benutzerNeu;
         }
         catch (Exception)
         {
             WebOperationContext.Current.OutgoingResponse.StatusCode = System.Net.HttpStatusCode.BadRequest;
             return new Benutzer();
         }
     }
 }