/// <summary> /// Fügt eine Bewertung zu einem Trainingsplan in der Datenbank hinzu /// </summary> /// <param name="bewertung">Hinzuzufügende Bewertung (Typ BewertungTrainingsplan)</param> /// <param name="trainingsplan">Zur Bewertung zugehöriger Trainingsplan (Typ Trainingsplan)</param> /// <returns>Gibt bei erfolgreichem Ausführen true zurück und bei einem Fehler false</returns> public bool AddBewertung(Bewertung bewertung, Trainingsplan trainingsplan) { try { StaticDB.Connect(); string insertBew = $"INSERT INTO TP_Bewertung ([User], Bewertung) VALUES ('{bewertung.Bewerter.Nutzername}', '{bewertung.Rating}');" + "SELECT CAST(SCOPE_IDENTITY() AS INT)"; StaticDB.Connection.Open(); SqlCommand command = new SqlCommand(insertBew, StaticDB.Connection); int lastID = (int)command.ExecuteScalar(); StaticDB.Connection.Close(); string insertLink = $"INSERT INTO TP_Link_BaseBewertung (ID_TP_Base, ID_TP_Bewertung) VALUES ({trainingsplan.ID}, {lastID})"; StaticDB.RunSQL(insertLink); trainingsplan.Bewertungen.Add(bewertung); return(true); } catch (Exception ex) { _ = ex.Message; if (StaticDB.Connection != null) { if (StaticDB.Connection.State != ConnectionState.Closed) { StaticDB.Connection.Close(); } } return(false); } }
/// <summary> /// Lädt eine Liste der Bewertungen zu einem Trainingsplan aus der Datenbank. /// </summary> /// <param name="ID">Nimmt die ID eines Trainingsplans entgegen (Integer)</param> /// <returns>Gibt eine Liste von Bewertungen zurück</returns> public List <Bewertung> GetBewertungen(int ID) { try { StaticDB.Connect(); List <Bewertung> bewertungsList = new List <Bewertung>(); string com = "SELECT bew.ID, bew.[User], Bewertung " + "FROM TP_Base as base " + "INNER JOIN TP_Link_BaseBewertung as link " + "ON base.ID = link.ID_TP_Base " + "INNER JOIN TP_Bewertung as bew " + "ON bew.ID = link.ID_TP_Bewertung " + $"WHERE base.ID = {ID}"; StaticDB.Connection.Open(); SqlCommand sqlCommand = new SqlCommand(com, StaticDB.Connection); var r = sqlCommand.ExecuteReader(); while (r.Read()) { Bewertung bewertung = new Bewertung() { ID = r.GetInt32(0), Bewerter = new User() { Nutzername = r.GetString(1) }, Rating = r.GetInt32(2) }; bewertungsList.Add(bewertung); } StaticDB.Connection.Close(); foreach (var item in bewertungsList) { item.Bewerter = AllVM.Datenbank.User.GetByName(item.Bewerter.Nutzername); } return(bewertungsList); } catch (Exception ex) { _ = ex.Message; if (StaticDB.Connection != null) { if (StaticDB.Connection.State != ConnectionState.Closed) { StaticDB.Connection.Close(); } } return(null); } }
/// <summary> /// Löscht eine Bewertung aus der Datenbank. /// </summary> /// <param name="bewertung">Zu löschende Bewertung (Typ BewertungTrainingsplan)</param> /// <returns>Gibt bei erfolgreichem Ausführen true zurück und bei einem Fehler false</returns> public bool DeleteBewertung(Bewertung bewertung) { try { string delBew = $"DELETE FROM TP_Bewertung WHERE ID={bewertung.ID}"; StaticDB.RunSQL(delBew); return(true); } catch (Exception ex) { _ = ex.Message; if (StaticDB.Connection != null) { if (StaticDB.Connection.State != ConnectionState.Closed) { StaticDB.Connection.Close(); } } return(false); } }
/// <summary> /// Die aktuelle Bewertung speichern /// </summary> private void Save(object sender, EventArgs e) { int bewert = 0; bool correct = false; foreach (Image item in bewGrid.Children) { if ((item.Source as FileImageSource).File == "Star_Filled") { bewert++; } } Bewertung bewertung = new Bewertung() { Bewerter = AllVM.ConvertToUser(), Rating = bewert }; if (type == typeof(Trainingsplan)) { correct = AllVM.Datenbank.Trainingsplan.AddBewertung(bewertung, TPlan); } else if (type == typeof(Ernährungsplan)) { correct = AllVM.Datenbank.Ernährungsplan.AddBewertung(bewertung, EPlan); } if (correct) { OnBackButtonPressed(); DependencyService.Get <IMessage>().ShortAlert("Erfolgreich bewertet"); } else { DependencyService.Get <IMessage>().ShortAlert("Fehler bei Bewertung"); } }