/// <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öscht einen Trainingsplan, inklusive der Bewertungen, aus der Datenbank. /// </summary> /// <param name="trainingsplan">Nimmt den zu löschenden Trainingsplan entgegen (Typ Trainingsplan)</param> /// <returns>Gibt bei erfolgreichem Ausführen true zurück und bei einem Fehler false</returns> public bool Delete(Trainingsplan trainingsplan) { try { foreach (var item in trainingsplan.Bewertungen) { string command = $"DELETE FROM TP_Bewertung WHERE ID={item.ID}"; StaticDB.RunSQL(command); } string com = $"DELETE FROM TP_Base WHERE ID={trainingsplan.ID}"; StaticDB.RunSQL(com); return(true); } catch (Exception ex) { _ = ex.Message; if (StaticDB.Connection != null) { if (StaticDB.Connection.State != ConnectionState.Closed) { StaticDB.Connection.Close(); } } return(false); } }
/// <summary> /// /// </summary> /// <param name="ID"></param> /// <returns></returns> public Trainingsplan GetByID(int ID) { try { StaticDB.Connect(); Trainingsplan trainingsplan = new Trainingsplan(); string com = "SELECT TP_Base.ID, TP_Base.Titel, TP_Info.ErstelltAM, TP_Info.ErstelltVon, TP_Info.GeaendertAm, TP_Info.Kategorie " + "FROM TP_Base " + "INNER JOIN TP_Info " + "ON TP_Base.ID = TP_Info.ID " + $"WHERE TP_Info.ID = '{ID}'"; StaticDB.Connection.Open(); SqlCommand sqlCommand = new SqlCommand(com, StaticDB.Connection); IDataReader r = sqlCommand.ExecuteReader(); while (r.Read()) { trainingsplan = new Trainingsplan() { ID = r.GetInt32(0), Titel = r.GetString(1), ErstelltAm = r.GetDateTime(2), Ersteller = new User() { Nutzername = r.GetString(3) }, Kategorie = r.GetString(5), }; if (!r.IsDBNull(4)) { trainingsplan.GeAendertAm = r.GetDateTime(4); } } StaticDB.Connection.Close(); trainingsplan.Ersteller = AllVM.Datenbank.User.GetByName(trainingsplan.Ersteller.Nutzername); trainingsplan.UebungList = AllVM.Datenbank.Trainingsplan.GetUebungen(trainingsplan.ID); trainingsplan.Bewertungen = AllVM.Datenbank.Trainingsplan.GetBewertungen(trainingsplan.ID); trainingsplan.DurchBewertung = AllVM.Datenbank.Trainingsplan.GetAvgBewertung(trainingsplan.ID); return(trainingsplan); } catch (Exception ex) { _ = ex.Message; if (StaticDB.Connection != null) { if (StaticDB.Connection.State != ConnectionState.Closed) { StaticDB.Connection.Close(); } } return(null); } }
// in arbeit /// <summary> /// Ändert einen Trainingsplan in der Datenbank /// </summary> /// <param name="trainingsplan">Nimmt den bearbeiteten Trainingsplan entgegen (Typ Trainingsplan)</param> /// <returns>Gibt bei erfolgreichem Ausführen true zurück und bei einem Fehler false</returns> public bool Edit(Trainingsplan trainingsplan) { try { StaticDB.Connect(); string editTP_Base = $"UPDATE TP_Base SET Titel = '{trainingsplan.Titel}' WHERE ID={trainingsplan.ID}"; StaticDB.RunSQL(editTP_Base); string delLink = $"DELETE FROM TP_Link_BaseUebung WHERE ID_Base={trainingsplan.ID}"; StaticDB.RunSQL(delLink); foreach (var item in trainingsplan.UebungList) { string com = $"SELECT * FROM TP_Uebungen WHERE Name='{item.Name}' AND Gewicht='{item.Menge.ToString().Replace(",", ".")}' AND Repetition={item.Wiederholungen} AND Sets={item.Sätze}"; if (StaticDB.CheckExistenz(com) == true) { SqlCommand sqlCommand = new SqlCommand(com, StaticDB.Connection); StaticDB.Connection.Open(); int ID = (int)sqlCommand.ExecuteScalar(); StaticDB.Connection.Close(); com = $"INSERT INTO TP_Link_BaseUebung (ID_Base, ID_Uebung) VALUES('{trainingsplan.ID}', '{ID}')"; StaticDB.RunSQL(com); } else { com = $"INSERT INTO TP_Uebungen (Name, Gewicht, Repetition, Sets) VALUES ('{item.Name}', '{item.Menge.ToString().Replace(",", ".")}', '{item.Wiederholungen}', '{item.Sätze}'); " + "SELECT CAST(SCOPE_IDENTITY() AS INT)"; StaticDB.Connection.Open(); SqlCommand command = new SqlCommand(com, StaticDB.Connection); int ID = (int)command.ExecuteScalar(); StaticDB.Connection.Close(); com = $"INSERT INTO TP_Link_BaseUebung (ID_Base, ID_Uebung) VALUES('{trainingsplan.ID}', '{ID}')"; StaticDB.RunSQL(com); } } string editTP_Info = $"UPDATE TP_Info SET GeaendertAm='{DateTime.Now}' WHERE ID={trainingsplan.ID}"; StaticDB.RunSQL(editTP_Info); return(true); } catch (Exception ex) { _ = ex.Message; if (StaticDB.Connection != null) { if (StaticDB.Connection.State != ConnectionState.Closed) { StaticDB.Connection.Close(); } } return(false); } }
/// <summary> /// Beitrag löschen /// </summary> private void Delete(object sender, EventArgs e) { Trainingsplan plan = TPlaene.Find(s => s.ID.ToString() == (sender as MenuItem).ClassId); if (AllVM.Datenbank.Trainingsplan.Delete(plan)) { GetList(); DependencyService.Get <IMessage>().ShortAlert("Erfolgreich gelöscht"); } else { DependencyService.Get <IMessage>().ShortAlert("Fehler beim Löschen"); } }
/// <summary> /// Fügt einen Trainingsplan zu der Datenbank hinzu. /// </summary> /// <param name="trainingsplan">Objekt vom Typ Trainingsplan</param> /// <returns>Gibt bei erfolgreichem Ausführen true zurück und bei einem Fehler false</returns> public bool AddTrainingsplan(Trainingsplan trainingsplan) { try { StaticDB.Connect(); string com = $"INSERT INTO TP_Base (Titel) values ('{trainingsplan.Titel}'); " + "SELECT CAST(SCOPE_IDENTITY() AS INT)"; SqlCommand command = new SqlCommand(com, StaticDB.Connection); StaticDB.Connection.Open(); int lastID = (int)command.ExecuteScalar(); StaticDB.Connection.Close(); if (trainingsplan.GeAendertAm != default) { com = $"INSERT INTO TP_Info (ID, ErstelltAm, ErstelltVon, GeaendertAm, Kategorie) VALUES ({lastID}, '{trainingsplan.ErstelltAm:yyyy-dd-MM HH:mm:ss}', '{trainingsplan.Ersteller.Nutzername}', '{trainingsplan.GeAendertAm:yyyy-dd-MM HH:mm:ss}', '{trainingsplan.Kategorie}');"; } else { com = $"INSERT INTO TP_Info (ID, ErstelltAm, ErstelltVon, Kategorie) VALUES ({lastID}, '{trainingsplan.ErstelltAm:yyyy-dd-MM HH:mm:ss}', '{trainingsplan.Ersteller.Nutzername}', '{trainingsplan.Kategorie}');"; } bool result = StaticDB.RunSQL(com); if (result == false) { com = $"DELETE FROM TP_Base WHERE ID = '{lastID}'"; StaticDB.RunSQL(com); return(false); } foreach (var uebung in trainingsplan.UebungList) { string checkEx = $"SELECT * FROM TP_Uebungen WHERE Name='{uebung.Name}' AND Gewicht={uebung.Menge.ToString().Replace(",", ".")} AND Repetition={uebung.Wiederholungen} AND Sets={uebung.Sätze}"; if (StaticDB.CheckExistenz(checkEx) == true) { int uebID = StaticDB.GetID(checkEx); string comTpLink = $"INSERT INTO TP_Link_BaseUebung (ID_Base, ID_Uebung) VALUES({lastID}, {uebID})"; StaticDB.RunSQL(comTpLink); } else { com = $"INSERT INTO TP_Uebungen (Name, Gewicht, Repetition, Sets, Einheit) VALUES ('{uebung.Name}', {uebung.Menge.ToString().Replace(",", ".")}, {uebung.Wiederholungen}, {uebung.Sätze}, '{uebung.Einheit}'); " + "SELECT CAST(SCOPE_IDENTITY() AS INT)"; SqlCommand insertUeb = new SqlCommand(com, StaticDB.Connection); StaticDB.Connection.Open(); int lastUebID = (int)insertUeb.ExecuteScalar(); StaticDB.Connection.Close(); string comTpLink = $"INSERT INTO TP_Link_BaseUebung (ID_Base, ID_Uebung) VALUES({lastID}, {lastUebID})"; StaticDB.RunSQL(comTpLink); } } StaticDB.Connection.Close(); return(true); } catch (Exception ex) { _ = ex.Message; if (StaticDB.Connection != null) { if (StaticDB.Connection.State != ConnectionState.Closed) { StaticDB.Connection.Close(); } } return(false); } }
/// <summary> /// Liest die Trainingspläne für einen Nutzer aus der Datenbank aus. /// </summary> /// <param name="Nutzername">Nutzername von dem Trainingspläne geladen werden sollen (string)</param> /// <returns>Liste von Trainingsplänen</returns> public List <Trainingsplan> GetList(string Nutzername = null) { try { string com = null; Trainingsplan trainingsplan = null; List <Trainingsplan> trainingsplaene = new List <Trainingsplan>(); StaticDB.Connect(); if (string.IsNullOrWhiteSpace(Nutzername)) { com = "SELECT TP_Base.ID, TP_Base.Titel, TP_Info.ErstelltAM, TP_Info.ErstelltVon, TP_Info.GeaendertAm, TP_Info.Kategorie " + "FROM TP_Base " + "INNER JOIN TP_Info " + "ON TP_Base.ID = TP_Info.ID "; } else { com = "SELECT TP_Base.ID, TP_Base.Titel, TP_Info.ErstelltAM, TP_Info.ErstelltVon, TP_Info.GeaendertAm, TP_Info.Kategorie " + "FROM TP_Base " + "INNER JOIN TP_Info " + "ON TP_Base.ID = TP_Info.ID " + $"WHERE TP_Info.ErstelltVon = '{Nutzername}'"; } SqlCommand sqlCommand = new SqlCommand(com, StaticDB.Connection); StaticDB.Connection.Open(); IDataReader r = sqlCommand.ExecuteReader(); while (r.Read()) { trainingsplan = new Trainingsplan() { ID = r.GetInt32(0), Titel = r.GetString(1), ErstelltAm = r.GetDateTime(2), Ersteller = new User() { Nutzername = r.GetString(3) }, Kategorie = r.GetString(5), }; if (!r.IsDBNull(4)) { trainingsplan.GeAendertAm = r.GetDateTime(4); } trainingsplaene.Add(trainingsplan); } StaticDB.Connection.Close(); foreach (var item in trainingsplaene) { item.Ersteller = AllVM.Datenbank.User.GetByName(item.Ersteller.Nutzername); item.UebungList = AllVM.Datenbank.Trainingsplan.GetUebungen(item.ID); item.Bewertungen = AllVM.Datenbank.Trainingsplan.GetBewertungen(item.ID); item.DurchBewertung = AllVM.Datenbank.Trainingsplan.GetAvgBewertung(item.ID); } return(trainingsplaene); } catch (Exception ex) { _ = ex.Message; if (StaticDB.Connection != null) { if (StaticDB.Connection.State != ConnectionState.Closed) { StaticDB.Connection.Close(); } } return(null); } }
/// <summary> /// BindingContext der Liste bearbeiten und Bewertung anzeigen /// </summary> void OnBindingContextChanged(System.Object sender, System.EventArgs e) { MenuItem menuItem = new MenuItem(); base.OnBindingContextChanged(); if (BindingContext == null) { return; } ViewCell theViewCell = ((ViewCell)sender); Trainingsplan item = theViewCell.BindingContext as Trainingsplan; theViewCell.ContextActions.Clear(); if (item != null) { int count_bew = 5; Grid bewGrid = ((theViewCell.View as Frame).Content as Grid).FindByName <Grid>("bewGrid"); double bewertung = -1; if (item.DurchBewertung != -2) { if (item.DurchBewertung == -1) { item.DurchBewertung = 0; } bewertung = Math.Round((double)item.DurchBewertung * 2, MidpointRounding.AwayFromZero) / 2; int count_filled = (int)Math.Floor(bewertung); double count_half = bewertung - count_filled; if (count_half > 0) { count_half = 1; } for (int i = 0; i < count_bew; i++) { Image star = new Image() { Aspect = Aspect.AspectFit, HeightRequest = 20, WidthRequest = 20 }; if (i <= count_filled - 1) { star.Source = ImageSource.FromFile("Star_Filled"); } else { if (count_half == 1) { star.Source = ImageSource.FromFile("Star_HalfFilled"); count_half = 0; } else { star.Source = ImageSource.FromFile("Star_Unfilled"); } } Grid.SetColumn(star, i); bewGrid.Children.Add(star); } } if (item.Ersteller.Nutzername == AllVM.User.Nutzername) { menuItem = new MenuItem() { Text = "Löschen", ClassId = $"{item.ID}", IsDestructive = true }; menuItem.Clicked += Delete; theViewCell.ContextActions.Add(menuItem); } } }