Esempio n. 1
0
        /// <summary>
        ///  Nimmt die Bewertung entgegen und schickt sie ans BackEnd.
        /// </summary>
        /// <param name="like">Vote vom Nutzer</param>
        /// <returns></returns>
        private async Task <bool> SendeVote(bool like)
        {
            bool        erfolg = false;
            PartyVoting voting = new PartyVoting();

            // Sperren der Oberfläche
            SperrenDerAnsicht();

            // Da wir diese Bewertung nicht abfragen, setzen wir diese Werte auf 0 (= nicht bewertet)
            voting.LocationRating = 0;
            voting.MoodRating     = 0;
            voting.PriceRating    = 0;

            if (like == true)
            {
                voting.GeneralRating = 1;

                erfolg = await BackEndComPartyLogik.PutPartyRating(uebergebeneParty, voting);
            }
            else
            {
                voting.GeneralRating = -1;

                erfolg = await BackEndComPartyLogik.PutPartyRating(uebergebeneParty, voting);
            }

            // Entsperren der Ansicht
            EntsperrenDerAnsicht();

            return(erfolg);
        }
Esempio n. 2
0
        /// <summary>
        /// Hier wird die Teilnahme/Absage für die Party vorgenommen.
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private async void Teilnehmen_CommitmentStateSetzen(object sender, RoutedEventArgs e)
        {
            CommitmentParty teilnehmen = new CommitmentParty();
            bool            zusagen    = false;

            // Hier wird der Status der Teilnahme notiert
            if (uebergebeneParty.UserCommitmentState != EventCommitmentState.Accepted)
            {
                teilnehmen.Teilnahme = EventCommitmentState.Accepted;

                zusagen = true;
            }
            else
            {
                teilnehmen.Teilnahme = EventCommitmentState.Rejected;

                zusagen = false;
            }

            // Sperren der Oberfläche
            SperrenDerAnsicht();

            // Teilnahme/Absage ans BackEnd schicken
            bool teilnahme = await BackEndComPartyLogik.PutPartyCommitmentState(uebergebeneParty, teilnehmen);

            if (teilnahme == true)
            {
                // Abhängig davon, ob der Nutzer teilnehmen oder absagen will, wird ihm eine entsprechende Nachricht ausgegeben.
                if (zusagen == true)
                {
                    var message = new MessageDialog(Meldungen.Anzeige.ErfolgTeilnahme, "Viel Spaß!");
                    await message.ShowAsync();

                    uebergebeneParty.UserCommitmentState = EventCommitmentState.Accepted;
                    this.Frame.Navigate(typeof(FensterHauptansicht));
                }
                else
                {
                    var message = new MessageDialog(Meldungen.Anzeige.ErfolgAbsage, "Schade!");
                    await message.ShowAsync();

                    uebergebeneParty.UserCommitmentState = EventCommitmentState.Rejected;
                }
            }
            else
            {
                var message = new MessageDialog(Meldungen.Anzeige.FehlerTeilnahmeAbsage, "Fehler!");
                await message.ShowAsync();
            }

            // Entsperrung der Oberfläche
            EntsperrenDerAnsicht();

            // Wechsel zur Hauptansicht
            this.Frame.Navigate(typeof(FensterHauptansicht));
        }
Esempio n. 3
0
        /// <summary>
        /// Hier wird die Party für den Nutzer vorgemerkt/nicht mehr vorgemerkt.
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private async void Vormerken_wechselZuHauptansicht(object sender, RoutedEventArgs e)
        {
            CommitmentParty commitment = new CommitmentParty();
            bool            notiert    = false;

            // Sperren der Oberfläche
            SperrenDerAnsicht();

            // Hier wird der Status der Vormerkung notiert
            if (uebergebeneParty.UserCommitmentState != EventCommitmentState.Noted)
            {
                commitment.Teilnahme = EventCommitmentState.Noted;

                notiert = true;
            }
            else
            {
                commitment.Teilnahme = EventCommitmentState.Rejected;

                notiert = false;
            }

            // Vormerkung ans BackEnd schicken
            bool antwort = await BackEndComPartyLogik.PutPartyCommitmentState(uebergebeneParty, commitment);

            // Entsperrung der Oberfläche
            EntsperrenDerAnsicht();


            if (antwort == true)
            {
                // Abhängig davon, ob der Nutzer die Party vormerken will oder nicht, wird ihm eine entsprechende Nachricht ausgegeben.
                if (notiert == true)
                {
                    var message = new MessageDialog(Meldungen.Anzeige.ErfolgVormerken, "Erfolg!");
                    await message.ShowAsync();

                    uebergebeneParty.UserCommitmentState = EventCommitmentState.Noted;
                }
                else
                {
                    var message = new MessageDialog(Meldungen.Anzeige.ErfolgVergessen, "Erfolg!");
                    await message.ShowAsync();

                    uebergebeneParty.UserCommitmentState = EventCommitmentState.Rejected;
                }
            }
            else
            {
                var message = new MessageDialog(Meldungen.Anzeige.FehlerVormerkenVergessen, "Fehler!");
                await message.ShowAsync();
            }

            // Zum Schluss wechselt man zur Hauptansicht
            this.Frame.Navigate(typeof(FensterHauptansicht));
        }
Esempio n. 4
0
        /// <summary>
        /// Gibt dem Nutzer die Möglichkeit seine erstelle Party zu löschen.
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private async void Loeschen_PartyLoeschen(object sender, RoutedEventArgs e)
        {
            // Teile übernommen von http://stackoverflow.com/questions/35392306/does-the-messagedialog-class-for-uwp-apps-support-three-buttons-on-mobile
            const int OK   = 1;
            const int ABBR = 2;

            // Dialog, der abfragt, ob der Nutzer die Party wirklich löschen will
            var message = new MessageDialog(Meldungen.Anzeige.AbsicherungLoeschen, "Achtung!");

            message.Commands.Add(new UICommand {
                Label = "Ja", Id = OK
            });
            message.Commands.Add(new UICommand {
                Label = "Abbrechen", Id = ABBR
            });
            var reaktion = await message.ShowAsync();

            var id = (int)(reaktion?.Id ?? ABBR);

            // Falls der Nutzer bestätigt, dass er die Party löschen will
            if (id == 1)
            {
                // Sperren der Oberfläche
                SperrenDerAnsicht();

                bool erfolg = await BackEndComPartyLogik.DeletePartyByID(uebergebeneParty);

                // Entsperrung der Oberfläche
                EntsperrenDerAnsicht();

                if (erfolg == true)
                {
                    message = new MessageDialog(Meldungen.Anzeige.ErfolgLoeschen, "Erfolg!");
                    await message.ShowAsync();
                }
                else
                {
                    message = new MessageDialog(Meldungen.Anzeige.MisserfolgLoeschen, "Fehler!");
                    await message.ShowAsync();
                }
            }
            else
            {
                message = new MessageDialog(Meldungen.Anzeige.AbbrechenLoeschen, "Abbrechen");
                await message.ShowAsync();
            }
            this.Frame.Navigate(typeof(FensterHauptansicht));
        }
        /// <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);
        }
Esempio n. 6
0
        /// <summary>
        /// Hier werden die Daten, die der Nutzer eingegeben hat, ausgelesen und abhängig davon, ob diese Party neu erstellt oder bearbeitet wird,
        /// die passende Backend-Methode aufgerufen.
        /// Bei Fehleingaben wird der Nutzer darauf hingewiesen und die Erstellung/Bearbeitung kann fortgesetzt werden.
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private async void Erstellen_wechselPostUndZuAnzeige(object sender, RoutedEventArgs e)
        {
            // Sperren der Oberfläche
            SperrenDerAnsicht();

            Party partyZuErstellen = new Party();
            bool  status           = false;

            // Objekt zum Validieren der Ortsangabe
            Location zuValidieren = new Location();

            zuValidieren.CityName    = textBoxErstellenORT.Text;
            zuValidieren.StreetName  = textBoxErstellenSTRASSE.Text;
            zuValidieren.HouseNumber = textBoxErstellenHAUSNR.Text;
            zuValidieren.ZipCode     = textBoxErstellenPLZ.Text;

            // Gibt die korrekte Adresse zurück, falls Google sie finden kann
            string adresseLautGoogle = await BackEndComPartyLogik.ValidateLocation(zuValidieren);

            if (adresseLautGoogle != "")
            {
                zuValidieren = JsonConvert.DeserializeObject <Location>(adresseLautGoogle);
            }

            // Speichern der Eingaben des Nutzers. Falscheingaben werden abgefangen und es wird eine Fehlermeldung ausgegeben.
            try
            {
                // Beim Bearbeiten wird die Id der vorhandenen Party benötigt
                try
                {
                    if (uebergebeneParty.PartyId != null)
                    {
                        partyZuErstellen.PartyId = uebergebeneParty.PartyId;
                    }
                }
                catch (Exception)
                {
                    // Zur Kenntnis genommen
                }

                partyZuErstellen.PartyName = textBoxErstellenNAME.Text;

                partyZuErstellen.Location = zuValidieren;

                DateTime zwischenSpeicherDate = new DateTime(DatePickerErstellenDATUM.Date.Year, DatePickerErstellenDATUM.Date.Month, DatePickerErstellenDATUM.Date.Day,
                                                             TimePickerErstellenUHRZEIT.Time.Hours, TimePickerErstellenUHRZEIT.Time.Minutes, TimePickerErstellenUHRZEIT.Time.Seconds);

                partyZuErstellen.PartyDate  = zwischenSpeicherDate;
                partyZuErstellen.MusicGenre = (MusicGenre)comboBoxErstellenMUSIKRICHTUNG.SelectedItem;
                partyZuErstellen.PartyType  = (PartyType)comboBoxErstellenTYP.SelectedItem;

                // Die Beschreibung und der Preis sind optional.
                // Deshalb werden Standardwerte benötigt, falls die Felder vom Nutzer leergelassen wurden.
                if (textBoxErstellenINFOS.Text != "")
                {
                    partyZuErstellen.Description = textBoxErstellenINFOS.Text;
                }
                else
                {
                    // Standardwert
                    partyZuErstellen.Description = "Keine Beschreibung vorhanden.";
                }

                if (textBoxErstellenPREIS.Text != "")
                {
                    string preis = textBoxErstellenPREIS.Text;
                    partyZuErstellen.Price = Int32.Parse(preis);
                }
                else
                {
                    // Standardwert
                    partyZuErstellen.Price = 0;
                }

                // Die zu erstellende/bearbeitende Party darf nicht in der Vergangenheit sein.
                if (partyZuErstellen.PartyDate.Date < DateTime.Today)
                {
                    Exception FehlerhaftesDatum = new Exception();
                    throw FehlerhaftesDatum;
                }

                // Party muss mindestens 2h in der Zukunft stattfinden
                if (partyZuErstellen.PartyDate <= DateTime.Now.AddHours(2))
                {
                    Exception FehlerhaftesDatum = new Exception();
                    throw FehlerhaftesDatum;
                }

                // Hier wird unterschieden, ob die Party bearbeitet oder neu erstellt wird.
                if (ueberarbeiten == false)
                {
                    // Party neu erstellen
                    status = await BackEndComPartyLogik.CreateParty(partyZuErstellen);
                }
                else
                {
                    // Party bearbeiten
                    status = await BackEndComPartyLogik.UpdatePartyByID(partyZuErstellen);
                }

                if (status == true)
                {
                    var message = new MessageDialog(Meldungen.Erstellen.Erfolg, "Erfolg!");
                    await message.ShowAsync();

                    this.Frame.Navigate(typeof(FensterHauptansicht));
                }
                else
                {
                    if (ueberarbeiten == false)
                    {
                        var message = new MessageDialog(Meldungen.Erstellen.FehlerSpeicher, "Fehler!");
                        await message.ShowAsync();

                        // Entsperren der Oberfläche
                        EntsperrenDerAnsicht();
                    }
                    else
                    {
                        var message = new MessageDialog(Meldungen.Erstellen.FehlerAktualisieren, "Fehler!");
                        await message.ShowAsync();

                        // Entsperren der Oberfläche
                        EntsperrenDerAnsicht();
                    }
                }
            }
            catch (Exception)
            {
                var message = new MessageDialog(Meldungen.Erstellen.UngueltigeEingabe, "Fehler!");
                await message.ShowAsync();

                // Entsperren der Oberfläche
                EntsperrenDerAnsicht();

                return;
            }

            // Entsperren der Oberfläche
            EntsperrenDerAnsicht();
        }