/// <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); }
/// <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)); }
/// <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)); }
/// <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); }
/// <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(); }