/// <summary> /// Mehr Beiträge laden. Zeitraum wird immer um 7 Tage addiert, wenn kein Beitrag vorhanden ist /// </summary> /// <param name="sender"></param> /// <param name="e"></param> void LoadMore(object sender, EventArgs e) { loadMoreBtn.IsVisible = false; vonDatum = DateTime.Now.AddDays(-days * (multiplikator + 1)).AddDays(1); bisDatum = DateTime.Now.AddDays(-days * multiplikator); CacheList = AllVM.Datenbank.Feed.Get(AllVM.ConvertToUser(), vonDatum, bisDatum); if (CacheList == null) { DependencyService.Get <IMessage>().ShortAlert("Fehler beim Abruf der Liste"); } else { multiplikator++; foreach (var item in CacheList) { FitFeedVM.ListNews.Add(item); } } while (CacheList != null && CacheList.Count == 0 && vonDatum > DateTime.Now.AddMonths(-3)) { vonDatum = DateTime.Now.AddDays(-days * (multiplikator + 1)).AddDays(1); bisDatum = DateTime.Now.AddDays(-days * multiplikator); CacheList = AllVM.Datenbank.Feed.Get(AllVM.ConvertToUser(), vonDatum, bisDatum); CacheList = CacheList.OrderByDescending(o => o.ErstelltAm).ToList(); foreach (var item in CacheList) { FitFeedVM.ListNews.Add(item); } multiplikator++; } }
/// <summary> /// Plan als Favorit kennzeichnen /// </summary> void FavoritePlan(System.Object sender, System.EventArgs e) { Image image = (sender as Image); if (image != null) { string key = "E;" + image.ClassId; if ((image.Source as FileImageSource).File == "Herz_Unfilled") { if (AllVM.Datenbank.User.AddFavo(key, AllVM.ConvertToUser())) { image.Source = ImageSource.FromFile("Herz_Filled"); } else { DependencyService.Get <IMessage>().ShortAlert("Fehler beim Favorisieren"); } } else if ((image.Source as FileImageSource).File == "Herz_Filled") { if (AllVM.Datenbank.User.DeleteFavo(key, AllVM.ConvertToUser())) { image.Source = ImageSource.FromFile("Herz_Unfilled"); } else { DependencyService.Get <IMessage>().ShortAlert("Fehler beim Favorisieren"); } } } }
/// <summary> /// Abonnieren des Nutzers ohne auf das Profil gehen zu müssen /// </summary> /// <param name="sender"></param> /// <param name="e"></param> void FollowOrUnFollow(System.Object sender, System.EventArgs e) { Button button = (sender as Button); if (button != null && !string.IsNullOrWhiteSpace(button.Text)) { Like like = (button.Parent.Parent as ViewCell).BindingContext as Like; if (button.Text == "Entfolgen") { AllVM.Datenbank.User.UnFollow(new User() { Nutzername = button.ClassId }, AllVM.ConvertToUser()); ListLikes[ListLikes.IndexOf(like)].IsSub = false; } else { AllVM.Datenbank.User.Follow(new User() { Nutzername = button.ClassId }, AllVM.ConvertToUser()); ListLikes[ListLikes.IndexOf(like)].IsSub = true; } //Aktualisierung der Liste listView.ItemsSource = null; listView.ItemsSource = ListLikes; } }
/// <summary> /// Überprüfen, ob der aktuelle Nutzer den Beitrag geliked hat. /// </summary> /// <param name="id">ID des Beitrages</param> /// <returns></returns> public bool CheckIfLiked(int id) { User user = AllVM.ConvertToUser(); try { string com = $"SELECT Feed_ID FROM Feed_Likes WHERE Feed_ID = '{id}' AND [User] = '{user.Nutzername}'"; SqlCommand command = new SqlCommand(com, StaticDB.Connection); StaticDB.Connection.Open(); object r = command.ExecuteScalar(); StaticDB.Connection.Close(); if (r != null) { return(true); } else { return(false); } } catch (Exception ex) { _ = ex.Message; if (StaticDB.Connection != null) { if (StaticDB.Connection.State != System.Data.ConnectionState.Closed) { StaticDB.Connection.Close(); } } return(false); } }
/// <summary> /// Prüfen der Daten für die Registrierung und dann speichern der Daten lokal wie in der Datenbank /// Voreinstellung einer Benutzerdaten, sodass ein bessere Userfeeling entsteht /// </summary> /// <param name="sender"></param> /// <param name="e"></param> async void Registrieren(System.Object sender, System.EventArgs e) { if (!string.IsNullOrWhiteSpace(RegVM.User.Nutzername)) { RegVM.User.Nutzername = RegVM.User.Nutzername.ToLower(); if (!string.IsNullOrWhiteSpace(RegVM.PW)) { if (!string.IsNullOrWhiteSpace(RegVM.PW2)) { if (RegVM.PW == RegVM.PW2) { string hashedpw = AllVM.HashPassword(RegVM.PW); RegVM.User.ErstelltAm = DateTime.Now; RegVM.User.Passwort = hashedpw; RegVM.User.InfoText = "Hi, ich bin neu hier!"; using (var webClient = new WebClient()) RegVM.User.ProfilBild = webClient.DownloadData("https://cdn.pixabay.com/photo/2016/11/11/09/59/white-male-1816195_1280.jpg"); if (AllVM.Datenbank.User.Insert(RegVM.User)) { AllVM.User = AllVM.ConvertFromUser(RegVM.User); Application.Current.Properties.Add("userid", RegVM.User.Nutzername); Application.Current.Properties.Add("userpw", RegVM.User.Passwort); await Application.Current.SavePropertiesAsync(); App.Current.MainPage = new AppShell(); } else { DependencyService.Get <IMessage>().ShortAlert("Fehler beim Speichern!"); } } else { DependencyService.Get <IMessage>().ShortAlert("Passwörter stimmen nicht überein"); } } else { DependencyService.Get <IMessage>().ShortAlert("Bitte Bestätigung eingeben"); } } else { DependencyService.Get <IMessage>().ShortAlert("Bitte Passwort eingeben"); } } else { DependencyService.Get <IMessage>().ShortAlert("Nutzername eingeben!"); } }
/// <summary> /// Methode, die erst nach dem Laden der Seite aufgerufen wird /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void Loaded(object sender, EventArgs e) { if (isOther == false) { user = AllVM.ConvertToUser(); } ProfilVM = new ProfilShowVM(user); GetFitFeed(); BindingContext = ProfilVM; SetButton(); }
/// <summary> /// Entfolgen eines Nutzers /// </summary> private void UnFollow() { if (AllVM.Datenbank.User.UnFollow(ProfilVM.User, AllVM.ConvertToUser())) { DependencyService.Get <IMessage>().ShortAlert("Erfolgreich entfolgt!"); ProfilVM.AboBtnText = "Folgen"; } else { DependencyService.Get <IMessage>().ShortAlert("Fehler beim Speichern"); } }
/// <summary> /// Plan mit Hilfe der ID aus der Datenbank /// </summary> /// <param name="id">ID des Plans</param> void GetByID(int id) { TPlan = AllVM.Datenbank.Trainingsplan.GetByID(id); if (TPlan != null) { TPlan.UebungList = AllVM.Datenbank.Trainingsplan.GetUebungen(TPlan.ID); IsFavorite = AllVM.Datenbank.User.CheckIfFavo($"T;{TPlan.ID}", AllVM.ConvertToUser()); } else { DependencyService.Get <IMessage>().ShortAlert("Es ist ein Fehler aufgetreten"); } }
/// <summary> /// Nutzer komplett löschen /// </summary> async void DeleteUser(System.Object sender, System.EventArgs e) { if (await DisplayAlert("Löschen?", "Möchtest du deinen Account wirklich löschen?\nAlle deine Daten werden nicht mehr zugänglich sein!", "Ja", "Nein")) { if (AllVM.Datenbank.User.Delete(AllVM.ConvertToUser())) { Application.Current.MainPage = new Login(); DependencyService.Get <IMessage>().ShortAlert("Erfolgreich gelöscht"); } else { DependencyService.Get <IMessage>().ShortAlert("Fehler beim Löschen"); } } }
/// <summary> /// Beitrag aus den Favoriten löschen /// </summary> private void Delete(object sender, EventArgs e) { var menuitem = (sender as MenuItem); if (AllVM.Datenbank.User.DeleteFavo(menuitem.ClassId, AllVM.ConvertToUser())) { DependencyService.Get <IMessage>().ShortAlert("Erfolgreich entfernt"); GetList(); FavoPlansVM.AnzeigeListe = FavoPlansVM.ListTrPlan.ToList <object>(); } else { DependencyService.Get <IMessage>().ShortAlert("Fehler beim Entfernen"); } }
/// <summary> /// Änderungen des Profils speichern und an die Datenbank senden /// </summary> private void Save(object sender, EventArgs e) { ProfilVM.User.OnlyCustomName = onlyCustomName.IsChecked; ProfilVM.User.CustomName = customName.Text; ProfilVM.User.InfoText = infoText.Text; if (AllVM.Datenbank.User.Update(ProfilVM.User)) { AllVM.User = AllVM.ConvertFromUser(ProfilVM.User); saved = true; OnBackButtonPressed(); DependencyService.Get <IMessage>().ShortAlert("Erfolgreich gespeichert"); } else { DependencyService.Get <IMessage>().ShortAlert("Fehler beim Speichern"); } }
/// <summary> /// Plan in die Datenbank speichern /// </summary> private void Save(object sender, EventArgs e) { //Übergabe von User, Mahlzeittitel und aktuellen Datum an Instanz "plan" von der Klasse Trainingsplan try { if (!string.IsNullOrEmpty(TrainingName)) { if (!string.IsNullOrEmpty(TrainingCategorie)) { plan.Ersteller = AllVM.ConvertToUser(); plan.ErstelltAm = DateTime.Now; plan.Titel = TrainingName.Replace("\n", ""); plan.Kategorie = TrainingCategorie; //Die Instanz "plan" von Trainingsplan wird zur Speicherung in der Datenbank an die Methode "AddTrainingsplan" übergeben if (AllVM.Datenbank.Trainingsplan.AddTrainingsplan(plan)) { //Rückkehr zur Ansicht "AddNew" OnBackButtonPressed(); //Anzeige einer Meldung für die erfolgreiche Speicherung DependencyService.Get <IMessage>().ShortAlert("Training wurde gespeichert!"); } else { //Anzeige einer Meldung für die fehlerhafte Speicherung DependencyService.Get <IMessage>().ShortAlert("Fehler beim Speichern"); } } else { DependencyService.Get <IMessage>().ShortAlert("Kategorie auswählen!"); } } else { DependencyService.Get <IMessage>().ShortAlert("Namen eingeben!"); } } catch { //Anzeige einer Meldung eine fehlgeschlagene Speicherung DependencyService.Get <IMessage>().ShortAlert("Ein unbekannter Fehler ist aufgetreten!"); } }
/// <summary> /// Daten aus der Datenbank bereitstellen /// </summary> private void GetList() { CacheList = AllVM.Datenbank.Feed.Get(AllVM.ConvertToUser(), vonDatum); if (CacheList != null) { FitFeedVM.ListNews.Clear(); CacheList = CacheList.OrderByDescending(o => o.ErstelltAm).ToList(); foreach (var item in CacheList) { FitFeedVM.ListNews.Add(item); } multiplikator++; } else { DependencyService.Get <IMessage>().ShortAlert("Fehler beim Abruf der Liste"); } }
/// <summary> /// Anmeldedaten prüfen, lokal speichern und an den Server melden /// </summary> /// <param name="sender"></param> /// <param name="e"></param> async void Save(object sender, EventArgs e) { if (!string.IsNullOrWhiteSpace(Nutzername)) { Nutzername = Nutzername.ToLower(); bool?exists = AllVM.Datenbank.User.Exists(Nutzername); if (exists == true) { string pw = AllVM.Datenbank.User.GetPasswort(Nutzername); string hpw = AllVM.HashPassword(Passwort); if (hpw == pw) { AllVM.Initial(Nutzername); Application.Current.Properties.Clear(); Application.Current.Properties.Add("userid", Nutzername); Application.Current.Properties.Add("userpw", pw); await Application.Current.SavePropertiesAsync(); App.Current.MainPage = new AppShell(); } else { DependencyService.Get <IMessage>().ShortAlert("Passwort stimmt nicht!"); } } else if (exists == false) { DependencyService.Get <IMessage>().ShortAlert("Nutzername unbekannt"); } else { DependencyService.Get <IMessage>().ShortAlert("Fehler beim Prüfen"); } } else { DependencyService.Get <IMessage>().ShortAlert("Nutzername eingeben!"); } }
/// <summary> /// Gefällt mir bei einem bestimmten Beitrag eintragen und dann Like-Symbol anzeigen /// </summary> /// <param name="id">ID des Beitrages</param> void Liken(string id) { bool?result = AllVM.Datenbank.Feed.Like(id, AllVM.ConvertToUser()); if (result == true) { idCache = id; FitFeedVM.ListNews.First(s => s.ID.ToString() == id).LikedTimer = true; FitFeedVM.ListNews.First(s => s.ID.ToString() == id).Liked = true; FitFeedVM.ListNews.First(s => s.ID.ToString() == id).Likes += 1; timer.Start(); } else if (result == false) { FitFeedVM.ListNews.First(s => s.ID.ToString() == id).Liked = false; FitFeedVM.ListNews.First(s => s.ID.ToString() == id).Likes -= 1; } else { DependencyService.Get <IMessage>().ShortAlert("Fehler beim Liken"); } }
/// <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"); } }
/// <summary> /// Beitrag liken /// </summary> void Like(System.Object sender, System.EventArgs e) { string id = (sender as Frame).ClassId; bool? result = AllVM.Datenbank.Feed.Like(id, AllVM.ConvertToUser()); if (result == true) { idCache = id; ProfilVM.FitFeed.First(s => s.ID.ToString() == id).LikedTimer = true; ProfilVM.FitFeed.First(s => s.ID.ToString() == id).Liked = true; ProfilVM.FitFeed.First(s => s.ID.ToString() == id).Likes += 1; timer.Start(); } else if (result == false) { ProfilVM.FitFeed.First(s => s.ID.ToString() == id).Liked = false; ProfilVM.FitFeed.First(s => s.ID.ToString() == id).Likes -= 1; } else { DependencyService.Get <IMessage>().ShortAlert("Fehler beim Liken"); } }
/// <summary> /// Status speichern und zur Datenbank übertragen /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void Save(object sender, EventArgs e) { //Prüfen, damit keine NULL-Werte in die Datenbank geschrieben werden if (!string.IsNullOrWhiteSpace(beschreibung.Text)) { StatusVM.Status.ErstelltVon = AllVM.ConvertToUser(); StatusVM.Status.ErstelltAm = DateTime.Now; //Prüfen, ob das Speichern in die Datenbank erfolgreich ist if (AllVM.Datenbank.Status.Insert(StatusVM.Status)) { OnBackButtonPressed(); DependencyService.Get <IMessage>().ShortAlert("Erfolgreich gespeichert"); } else { DependencyService.Get <IMessage>().ShortAlert("Fehler beim Speichern"); } } else { DependencyService.Get <IMessage>().ShortAlert("Beschreibung ausfüllen"); } }
/// <summary> /// Lokale Variablen prüfen und ggf. automatisch Anmelden /// </summary> private void AutoLogin() { string user = null, passwort = null; try { var current = Connectivity.NetworkAccess; if (current == NetworkAccess.Internet) { if (Current.Properties.ContainsKey("userid")) { if (Current.Properties["userid"] != null) { user = Current.Properties["userid"].ToString(); } } if (Current.Properties.ContainsKey("userpw")) { if (Current.Properties["userpw"] != null) { passwort = Current.Properties["userpw"].ToString(); } } if (!string.IsNullOrWhiteSpace(user) && !string.IsNullOrWhiteSpace(passwort)) { bool?exists = AllVM.Datenbank.User.Exists(user); if (exists == true) { string pw = AllVM.Datenbank.User.GetPasswort(user); if (user != null && (passwort == pw)) { AllVM.Initial(user); MainPage = new AppShell(); } else { DependencyService.Get <IMessage>().ShortAlert("Passwort stimmt nicht"); MainPage = new NavigationPage(new Login()); } } else if (exists == false) { DependencyService.Get <IMessage>().ShortAlert("Nutzer existiert nicht"); MainPage = new NavigationPage(new Login()); } else { DependencyService.Get <IMessage>().ShortAlert("Fehler beim Prüfen"); MainPage = new NavigationPage(new Login()); } } else { MainPage = new NavigationPage(new Login()); } } } catch (Exception ex) { _ = ex.Message; MainPage = new NavigationPage(new Login()); } }
/// <summary> /// Bestimmten Plan mit Hilfe der ID bereitstellen /// </summary> void GetByID(int id) { EPlan = AllVM.Datenbank.Ernährungsplan.GetByID(id); if (EPlan != null) { EPlan.MahlzeitenList = AllVM.Datenbank.Ernährungsplan.GetMahlzeiten(EPlan.ID); IsFavorite = AllVM.Datenbank.User.CheckIfFavo($"E;{EPlan.ID}", AllVM.ConvertToUser()); } else { DependencyService.Get <IMessage>().ShortAlert("Es ist ein Fehler aufgetreten"); } }
/// <summary> /// Prüfen und Speichern des neuen Passworts /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void Save(object sender, EventArgs e) { //Passwort muss bestimmte Kriterien haben var hasNumber = new Regex(@"[0-9]+"); var hasUpperChar = new Regex(@"[A-Z]+"); var hasLowerChar = new Regex(@"[a-z]+"); var hasMinimum8Chars = new Regex(@".{8,}"); string chpw = AllVM.HashPassword(cPWVM.CurPW); if (curPW == chpw) { if (!string.IsNullOrWhiteSpace(cPWVM.NewPW1)) { if (!string.IsNullOrWhiteSpace(cPWVM.NewPW1)) { if (hasMinimum8Chars.IsMatch(cPWVM.NewPW1)) { if (hasLowerChar.IsMatch(cPWVM.NewPW1)) { if (hasUpperChar.IsMatch(cPWVM.NewPW1)) { if (hasNumber.IsMatch(cPWVM.NewPW1)) { if (cPWVM.NewPW1 == cPWVM.NewPW2) { string hpw = AllVM.HashPassword(cPWVM.NewPW1); if (AllVM.Datenbank.User.ChangePW(cPWVM.User.Nutzername, hpw)) { AllVM.User.Passwort = hpw; OnBackButtonPressed(); DependencyService.Get <IMessage>().ShortAlert("Passwort erfolgreich geändert"); } else { DependencyService.Get <IMessage>().ShortAlert("Fehler beim Ändern"); } } else { DependencyService.Get <IMessage>().ShortAlert("Passwörter stimmen nicht überein"); } } else { DependencyService.Get <IMessage>().ShortAlert("Passwort muss mindestens eine Nummer enthalten"); } } else { DependencyService.Get <IMessage>().ShortAlert("Passwort muss mindestens einen Großbuchstaben enthalten"); } } else { DependencyService.Get <IMessage>().ShortAlert("Passwort muss mindestens einen Kleinbuchstaben enthalten"); } } else { DependencyService.Get <IMessage>().ShortAlert("Passwort muss mindestens 8 Zeichen lang sein"); } } else { DependencyService.Get <IMessage>().ShortAlert("Passwort wiederholen!"); } } else { DependencyService.Get <IMessage>().ShortAlert("Neues Passwort muss gefüllt werden"); } } else { DependencyService.Get <IMessage>().ShortAlert("Aktuelles Passwort ist nicht korrekt!"); } }
public ProfilEdit() { InitializeComponent(); ProfilVM = new ProfilEditVM(AllVM.ConvertToUser()); Start(); }