/// <summary>
        /// Wechsel zur Hauptansicht und Speichern der eingegeben Daten.
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private async void Speichern_DatenSichernUndWechselZuHauptansicht(object sender, RoutedEventArgs e)
        {
            // Sperren der Oberfläche
            SperrenDerAnsicht();

            bool speichernErfolgreich = false;

            UserEinstellungen einst = new UserEinstellungen();

            // Aktueller Wert des Sliders für den Radius
            einst.Radius     = (float)sliderSuchradius.Value;
            einst.GPSErlaubt = toggleSwitchGPSErlaubnis.IsOn;
            // Weitere Einstellungen möglich

            // Speichern der Nutzereinstellungen in einer Datei
            speichernErfolgreich = await DatenVerarbeitung.UserEinstellungenSpeichern(einst);

            // Wechsel zur Hauptansicht und Ausgabe des Erfolgs/Misserfolgs beim Speichern
            if (speichernErfolgreich == true)
            {
                this.Frame.Navigate(typeof(FensterHauptansicht));
            }
            else
            {
                var message = new MessageDialog(Meldungen.UserEinstellungen.SpeicherFehler, "Fehler!");
                await message.ShowAsync();

                this.Frame.Navigate(typeof(FensterHauptansicht));
            }

            // Oberfläche entsperren
            EntsperrenDerAnsicht();
        }
        /// <summary>
        /// Abmelden durch Wechsel zur Startansicht (FensterAnmOdReg) und Speichern von Defaultwerten
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private async void btnAbmelden_wechselZuFensterAnmelden(object sender, RoutedEventArgs e)
        {
            // Sperren der Oberfläche
            SperrenDerAnsicht();

            // UserEinstellungen auf Default zurücksetzen
            bool speichernErfolgreich = false;
            UserEinstellungen einst   = new UserEinstellungen();

            einst.Radius = 50;

            // "Neue" Werte speichern
            speichernErfolgreich = await DatenVerarbeitung.UserEinstellungenSpeichern(einst);

            // Partyliste aus Zwischenspeichern löschen
            IEnumerable <Party> liste = null;

            speichernErfolgreich = await DatenVerarbeitung.PartysSpeichern(liste);

            // Oberfläche entsperren
            EntsperrenDerAnsicht();

            // Wechsel zum Start
            this.Frame.Navigate(typeof(FensterAnmOdReg));
        }
        /// <summary>
        /// Stellt die Erlaubnis für die GPS-Nutzung ein und fragt bei Änderungen nochmal nach.
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private async void toggleSwitchGPSErlaubnis_GPSEinstellen(object sender, RoutedEventArgs e)
        {
            // Oberfläche sperren
            SperrenDerAnsicht();

            UserEinstellungen einst = await DatenVerarbeitung.UserEinstellungenAuslesen();

            var accessStatus = await Geolocator.RequestAccessAsync();

            if (accessStatus == GeolocationAccessStatus.Allowed)
            {
                // Status des ToggleSwitches NACH dem Antippen
                if (toggleSwitchGPSErlaubnis.IsOn == true)
                {
                    einst.GPSErlaubt = true;
                }
                else
                {
                    einst.GPSErlaubt = false;
                }
            }
            else
            {
                einst.GPSErlaubt = false;
                toggleSwitchGPSErlaubnis.IsOn = false; // Da GPS nicht erlaubt
                var message = new MessageDialog(Meldungen.UserEinstellungen.FehlerGPS, "Achtung!");
                await message.ShowAsync();
            }

            // Neue Einstellungen speichern
            await DatenVerarbeitung.UserEinstellungenSpeichern(einst);

            // Oberfläche entsperren
            EntsperrenDerAnsicht();
        }
        /// <summary>
        /// Speichert die Partys auf der ListView für die Offline-Nutzung.
        /// </summary>
        /// <param name="liste"></param>
        /// <returns></returns>
        private static async Task <bool> ListViewAuslesenUndZwischenspeichern(IEnumerable <Party> liste)
        {
            bool erfolg = false;

            erfolg = await DatenVerarbeitung.PartysSpeichern(liste);

            return(erfolg);
        }
        /// <summary>
        /// Auslesen des vom Nutzer gesetzten Suchradius aus einer Datei und Anzeigen durch Slider.
        /// </summary>
        private async void SuchRadiusUndGPSEinstellen()
        {
            UserEinstellungen einst = await DatenVerarbeitung.UserEinstellungenAuslesen();

            if (einst.Radius != 0)
            {
                sliderSuchradius.Value = einst.Radius;
            }
            else
            {
                sliderSuchradius.Value = 50;
            }

            if (einst.GPSErlaubt == true)
            {
                toggleSwitchGPSErlaubnis.IsOn = true;
            }
            else
            {
                toggleSwitchGPSErlaubnis.IsOn = false;
            }
        }
        /// <summary>
        /// Gibt die aktuellen Partys aus der Umgebung zurück.
        /// </summary>
        /// <returns></returns>
        private static async Task <IEnumerable <Party> > btnInDerNaehePartysAbrufen()
        {
            IEnumerable <Party> partyListe = null;
            Location            pos;

            try
            {
                // Aktuelle Position ermitteln
                var geoLocation = new GeolocationLogik();
                pos = await geoLocation.GetLocation();
            }
            catch (Exception)
            {
                var message = new MessageDialog(Meldungen.Hauptansicht.FehlerGPSNoetig, "Achtung!");
                await message.ShowAsync();

                return(null);
            }

            // Radius aus UserEinstellungen
            UserEinstellungen einst = await DatenVerarbeitung.UserEinstellungenAuslesen();

            float radius = einst.Radius;

            // Liste der Partys vom BackEnd erhalten
            partyListe = await BackEndComPartyLogik.GetParties(pos, radius);

            // Zwischenspeichern der aktuell angezeigten Partys
            bool erfolg = await ListViewAuslesenUndZwischenspeichern(partyListe);

            if (erfolg == false)
            {
                var message = new MessageDialog(Meldungen.Hauptansicht.FehlerZwischenSpeichern, "Fehler beim Speichern für Offline-Nutzung!");
            }

            return(partyListe);
        }
        /// <summary>
        /// Bei Wechsel auf diese Seite wird eine Hinweismeldung ausgegeben (falls man vom Anmelden oder Registrieren kommt).
        /// Zusätzlich werden die eventuell schon zwischengespeicherten Partys wieder ausgelesen.
        /// </summary>
        /// <param name="e"></param>
        protected async override void OnNavigatedTo(NavigationEventArgs e)
        {
            // Sperren der Oberfläche
            this.IsEnabled = false;
            this.AppBarButtonEinstellungen.IsEnabled = false;
            this.AppBarButtonHinzufuegen.IsEnabled   = false;
            this.AppBarButtonInDerNaehe.IsEnabled    = false;
            progressRingInDerNaehe.Visibility        = Visibility.Visible;
            progressRingInDerNaehe.IsActive          = true;

            // Hinweis erscheint nur, wenn man vom Anmelden/Registrieren auf diese Haupansicht kommt
            PageStackEntry vorherigeSeite    = Frame.BackStack.Last();
            Type           vorherigeSeiteTyp = vorherigeSeite?.SourcePageType;

            if (vorherigeSeiteTyp == (typeof(FensterAnmelden)) || vorherigeSeiteTyp == (typeof(FensterReg)))
            {
                var message = new MessageDialog(Meldungen.Hauptansicht.Nutzungsbedingungen, "Hinweis");
                await message.ShowAsync();
            }

            try
            {
                // Anzeigen der zwischengespeicherten Partys (falls vorhanden)
                partyListe = await DatenVerarbeitung.PartysAuslesen();
            }
            catch (Exception)
            {
            }

            UserEinstellungen einst = await DatenVerarbeitung.UserEinstellungenAuslesen();

            if (einst.GPSErlaubt == true)
            {
                // Anzeigen der Partys in der "normalen" Liste und ggf. in der Liste für die vorgemerkten Partys.
                if (partyListe != null && partyListe.Any() == true)
                {
                    anzahlPartys = partyListe.Count();

                    for (int durchlauf = 0; durchlauf < anzahlPartys; durchlauf++)
                    {
                        // Liste aller Partys in der Nähe werden in der "normalen" ListView angezeigt
                        party = partyListe.ElementAt(durchlauf);
                        listViewSuchErgebnis.Items.Add(party.PartyName);

                        // Auf der Karte anzeigen
                        PartyAufMapAnzeigen(party);

                        // Liste der vorgemerkten Partys werden in einer separaten ListView angezeigt
                        if (party.UserCommitmentState == EventCommitmentState.Noted)
                        {
                            listViewVorgemerkt.Items.Add(party.PartyName);

                            anzahlVorgemerkt++;
                        }

                        // Liste der Partys, bei denen der Nutzer teilnimmt, werden in einer separaten ListView angezeigt
                        if (party.UserCommitmentState == EventCommitmentState.Accepted)
                        {
                            listViewTeilnahme.Items.Add(party.PartyName);

                            anzahlTeilgenommen++;
                        }
                    }
                }

                // Aktuelle Position ermitteln und dies als Kartenmittelpunkt setzen
                var      geoLocation = new GeolocationLogik();
                Location location    = await geoLocation.GetLocation();

                BasicGeoposition basis = new BasicGeoposition()
                {
                    Latitude = location.Latitude, Longitude = location.Longitude
                };
                Geopoint point = new Geopoint(basis);
                mapControlHauptansicht.Center           = point;
                mapControlHauptansicht.ZoomLevel        = 15;
                mapControlHauptansicht.LandmarksVisible = true;
            }

            // Entsperren der Oberfläche
            progressRingInDerNaehe.Visibility        = Visibility.Collapsed;
            progressRingInDerNaehe.IsActive          = false;
            this.AppBarButtonEinstellungen.IsEnabled = true;
            this.AppBarButtonHinzufuegen.IsEnabled   = true;
            this.AppBarButtonInDerNaehe.IsEnabled    = true;
            this.IsEnabled = true;
        }
        /// <summary>
        /// Zeigt die Partys in der Umgebung an. Suchradius wird in UserEinstellungen geändert.
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        public async void Suchen_abrufenPartys(object sender, RoutedEventArgs e)
        {
            // Sperren der Oberfläche
            SperrenDerAnsicht();

            // Listen leeren
            listViewSuchErgebnis.Items.Clear();
            listViewVorgemerkt.Items.Clear();
            listViewTeilnahme.Items.Clear();

            UserEinstellungen einst = await DatenVerarbeitung.UserEinstellungenAuslesen();

            if (einst.GPSErlaubt == true)
            {
                // Liste der Partys aus der Nähe
                partyListe = await btnInDerNaehePartysAbrufen();

                // Anzeigen der Partys in der "normalen" Liste und ggf. in der Liste für die vorgemerkten Partys.
                if (partyListe.Any())
                {
                    anzahlPartys = partyListe.Count();

                    for (int durchlauf = 0; durchlauf < anzahlPartys; durchlauf++)
                    {
                        // Liste aller Partys in der Nähe werden in der "normalen" ListView angezeigt
                        party = partyListe.ElementAt(durchlauf);
                        listViewSuchErgebnis.Items.Add(party.PartyName);

                        // Auf der Karte anzeigen
                        PartyAufMapAnzeigen(party);

                        // Liste der vorgemerkten Partys werden in einer separaten ListView angezeigt
                        if (party.UserCommitmentState == EventCommitmentState.Noted)
                        {
                            listViewVorgemerkt.Items.Add(party.PartyName);

                            anzahlVorgemerkt++;
                        }

                        // Liste der Partys, bei denen der Nutzer teilnimmt, werden in einer separaten ListView angezeigt
                        if (party.UserCommitmentState == EventCommitmentState.Accepted)
                        {
                            listViewTeilnahme.Items.Add(party.PartyName);

                            anzahlTeilgenommen++;
                        }
                    }
                }
                else
                {
                    var message = new MessageDialog(Meldungen.Hauptansicht.KeinePartysInDerNaehe, "Schade!");
                    await message.ShowAsync();
                }
            }
            else
            {
                var message = new MessageDialog(Meldungen.Hauptansicht.FehlerGPSNoetig, "Achtung!");
                await message.ShowAsync();
            }

            // Oberfläche entsperren
            EntsperrenDerAnsicht();
        }
        /// <summary>
        /// Erstellen des neuen Nutzers und bei Erfolg wechseln zur Hauptansicht.
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private async void Bestaetigen_WechselZuHauptansicht(object sender, RoutedEventArgs e)
        {
            bool status = false;
            bool erfolg = false;
            bool speichernErfolgreich = false;

            // Daten auslesen
            neuerNutzer.Username = textBoxRegNUTZERNAME.Text;
            neuerNutzer.Email    = textBoxRegEMAIL.Text;

            // Oberfläche sperren
            SperrenDerAnsicht();

            if (pwBoxPASSWORT.Password == pwBoxPASSWORTBEST.Password)
            {
                // Speichern des Passworts
                neuerNutzer.Password = pwBoxPASSWORTBEST.Password;
                // Anlegen des neuen Nutzers
                status = await BackEndComUserLogik.CreateUser(neuerNutzer);

                progRingReg.Visibility = Visibility.Collapsed;
                progRingReg.IsActive   = false;

                // Abhängig vom Erfolg/Misserfolg beim Erstellen wird eine Nachricht angezeigt und ggf. die Ansicht gewechselt.
                if (status == true)
                {
                    var message = new MessageDialog(Meldungen.Registrierung.ErfolgEins + neuerNutzer.Email.ToString() + Meldungen.Registrierung.ErfolgZwei, "Nutzer erfolgreich registriert!");
                    await message.ShowAsync();

                    // Speichern der Login-Daten
                    erfolg = await DatenVerarbeitung.LoginSpeichern(neuerNutzer);

                    // UserEinstellungen auf Default zurücksetzen
                    UserEinstellungen einst = new UserEinstellungen();
                    einst.Radius     = 50;
                    einst.GPSErlaubt = false;

                    // "Neue" Werte speichern
                    speichernErfolgreich = await DatenVerarbeitung.UserEinstellungenSpeichern(einst);

                    if (erfolg == true && speichernErfolgreich == true)
                    {
                        // Wechsel zur Hauptansicht
                        this.Frame.Navigate(typeof(FensterHauptansicht));
                    }
                    else
                    {
                        message = new MessageDialog(Meldungen.Registrierung.SpeicherFehler, "Fehler beim Speichern!");
                        await message.ShowAsync();
                    }
                }
                else
                {
                    var message = new MessageDialog(Meldungen.Registrierung.ErstellenFehler, "Fehler beim Erstellen!");
                    await message.ShowAsync();
                }
            }
            else
            {
                var message = new MessageDialog(Meldungen.Registrierung.PasswortFehler, "Passwörter sind nciht identisch!");
                await message.ShowAsync();
            }

            // Entsperren der Oberfläche
            EntsperrenDerAnsicht();
        }
Example #10
0
        /// <summary>
        /// Hier werden die Daten vom Nutzer validiert. Entweder ändert sich die Anzeige (korrekte Daten) oder der Nutzer erhält eine Nachricht,
        /// dass die eingegeben Daten falsch sind.
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private async void Anmelden_WechselZuHauptansicht(object sender, RoutedEventArgs e)
        {
            bool korrekteEingabe          = false;
            bool speichernErfolgreich     = false;
            bool einstellungenErfolgreich = false;

            // UserEinstellungen auf Default zurücksetzen
            UserEinstellungen einst = new UserEinstellungen();

            einst.Radius     = 50;
            einst.GPSErlaubt = false;

            // "Neue" Werte speichern
            speichernErfolgreich = await DatenVerarbeitung.UserEinstellungenSpeichern(einst);

            // Partyliste aus Zwischenspeichern löschen
            IEnumerable <Party> liste = null;

            speichernErfolgreich = await DatenVerarbeitung.PartysSpeichern(liste);

            anmeldung.Username = txtBoxAnmNUTZERNAME.Text;
            anmeldung.Email    = txtBlAnmEMAIL.Text;
            anmeldung.Password = pwBoxPASSWORT.Password;

            // Sperren der Ansicht
            SperrenDerAnsicht();

            korrekteEingabe = await DatenVerarbeitung.LoginUeberpruefen(anmeldung);

            if (korrekteEingabe == true)
            {
                // Speichern der Anmeldedaten in eine Textdatei
                speichernErfolgreich = await DatenVerarbeitung.LoginSpeichern(anmeldung);

                // Default-Radius für Suchumfeld in Datei speichern
                einstellungenErfolgreich = await DatenVerarbeitung.UserEinstellungenSpeichern(einst);

                if (speichernErfolgreich == true && einstellungenErfolgreich == true)
                {
                    // Wenn alles erfolgreich gespeichert wurde
                    progressRingAnmeldung.Visibility = Visibility.Collapsed;
                    progressRingAnmeldung.IsActive   = false;
                    var message = new MessageDialog(Meldungen.Anmeldung.Erfolg, "Erfolg!");
                    await message.ShowAsync();

                    this.Frame.Navigate(typeof(FensterHauptansicht));
                }
                else
                {
                    var message = new MessageDialog(Meldungen.Anmeldung.UnbekannterFehler, "Unbekannter Fehler!");
                    await message.ShowAsync();
                }
            }
            else
            {
                var message = new MessageDialog(Meldungen.Anmeldung.Misserfolg, "Fehler bei der Anmeldung!");
                await message.ShowAsync();
            }

            // Oberfläche entsperren
            EntsperrenDerAnsicht();
        }