/// <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();
        }
Example #4
0
        /// <summary>
        /// Speichert die übergebenen Einstellungen in die dafür vorgesehene Datei. Falls die Datei schon bestehen sollte, wird diese Überschrieben.
        /// </summary>
        /// <param name="einst">Einstellungen zu speichern</param>
        /// <returns></returns>
        public static async Task <bool> UserEinstellungenSpeichern(UserEinstellungen einst)
        {
            bool erfolg = false;

            // Zieldatei erstellen/überschreiben
            speicherDatei = await speicherOrdner.CreateFileAsync(DateiUserEinstellungen, Windows.Storage.CreationCollisionOption.ReplaceExisting);

            // Kontrolle
            if (speicherOrdner == null)
            {
                var message = new MessageDialog(Meldungen.DatenVerarbeitung.FehlerSpeichern, "Fehler beim Speichern!");
                await message.ShowAsync();

                return(erfolg);
            }

            try
            {
                string userEinstellungenAlsString = JsonConvert.SerializeObject(einst);
                // In Datei schreiben
                await FileIO.WriteTextAsync(speicherDatei, userEinstellungenAlsString);

                erfolg = true;
            }
            catch (Exception)
            {
                var message = new MessageDialog(Meldungen.DatenVerarbeitung.FehlerSpeichern, "Fehler beim Speichern!");
                await message.ShowAsync();

                return(erfolg);
            }
            return(erfolg);
        }
Example #5
0
        /// <summary>
        /// Liest die Daten aus der Datei für die Nutzereinstellungen.
        /// </summary>
        /// <returns></returns>
        public static async Task <UserEinstellungen> UserEinstellungenAuslesen()
        {
            UserEinstellungen ausDatei = new UserEinstellungen();

            speicherDatei = await speicherOrdner.GetFileAsync(DateiUserEinstellungen);

            // Daten auslesen
            string text = await FileIO.ReadTextAsync(speicherDatei);

            // Bei Fehler in Datei oder beim Auslesen wird null zurückgegeben.
            if (text != null)
            {
                ausDatei = JsonConvert.DeserializeObject <UserEinstellungen>(text);
            }
            else
            {
                ausDatei = null;
            }

            return(ausDatei);
        }
        /// <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>
        /// 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>
        /// Gibt den aktuellen Standort als Latitude und Longitude zurück.
        /// </summary>
        /// <returns>Aktuellen Standort des Nutzers</returns>
        public async Task <Location> GetLocation()
        {
            // Code von http://stackoverflow.com/questions/32323942/windows-universal-uwp-geolocation-api-permissions

            CancellationTokenSource _cts;
            // Erlaubnis zwischenspeichern
            UserEinstellungen einst = new UserEinstellungen();

            einst = await DatenVerarbeitung.UserEinstellungenAuslesen();

            try
            {
                // Request permission to access location
                var accessStatus = await Geolocator.RequestAccessAsync();

                if (accessStatus == GeolocationAccessStatus.Allowed)
                {
                    einst.GPSErlaubt = true;
                    await DatenVerarbeitung.UserEinstellungenSpeichern(einst);

                    // Get cancellation token
                    _cts = new CancellationTokenSource();
                    CancellationToken token = _cts.Token;

                    // If DesiredAccuracy or DesiredAccuracyInMeters are not set (or value is 0), DesiredAccuracy.Default is used.
                    Geolocator geolocator = new Geolocator {
                        DesiredAccuracyInMeters = 100
                    };

                    // Carry out the operation
                    var _pos = await geolocator.GetGeopositionAsync().AsTask(token);

                    return(new Location()
                    {
                        Latitude = (float)_pos.Coordinate.Point.Position.Latitude,
                        Longitude = (float)_pos.Coordinate.Point.Position.Longitude
                    });
                }
                else if (accessStatus == GeolocationAccessStatus.Denied)
                {
                    // Wenn der Nutzer der App nicht den Standort zur Verfügung stellt, wird der Nutzer infomiert, dass die App dann nicht komplett verwendet werden kann
                    einst.GPSErlaubt = false;
                    await DatenVerarbeitung.UserEinstellungenSpeichern(einst);

                    var message = new MessageDialog(Meldungen.Hauptansicht.FehlerGPSNoetig, "Achtung!");
                    return(null);
                }
                else
                {
                    throw new Exception("Problem with location permissions or access");
                }
            }
            catch (TaskCanceledException tce)
            {
                throw new Exception("Task cancelled" + tce.Message);
            }
            finally
            {
                _cts = null;
            }
        }
        /// <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 #11
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();
        }