/// <summary> /// Schickt die neuen Informationen einer bereits erstellten Party an den Server. /// </summary> /// <param name="id">ID der zu aktualisierenden Party</param> /// <param name="party">Party mit neuen Werten</param> /// <returns>Erfolg</returns> public static async Task <bool> UpdatePartyByID(Party party) { bool internetVorhanden = IsInternet(); bool erfolg = false; // Umspeichern der Daten für BackEnd CreateParty partyZuErstellen = new CreateParty(); partyZuErstellen.PartyName = party.PartyName; partyZuErstellen.PartyDate = party.PartyDate; partyZuErstellen.MusicGenre = party.MusicGenre; partyZuErstellen.CountryName = "Deutschland"; partyZuErstellen.CityName = party.Location.CityName; partyZuErstellen.StreetName = party.Location.StreetName; partyZuErstellen.HouseNumber = party.Location.HouseNumber; partyZuErstellen.Zipcode = party.Location.ZipCode; partyZuErstellen.PartyType = party.PartyType; partyZuErstellen.Description = party.Description; partyZuErstellen.Price = party.Price; bool aktuellerToken = await DatenVerarbeitung.aktuellerToken(); Token token = await DatenVerarbeitung.TokenAuslesen(); if (internetVorhanden == true && aktuellerToken == true) { HttpClient client = GetClientParty(); HttpResponseMessage httpAntwort = new HttpResponseMessage(); client.DefaultRequestHeaders.Add("Authorization", "Bearer " + token.AccessToken); HttpContent content = new StringContent(JsonConvert.SerializeObject(partyZuErstellen), Encoding.UTF8, "application/json"); try { httpAntwort = await client.PutAsync($"Party/?id={party.PartyId}", content); erfolg = httpAntwort.IsSuccessStatusCode; return(erfolg); } catch (Exception) { var message = new MessageDialog("Fehler! Bitte versuche es später erneut."); await message.ShowAsync(); return(false); } } else { // Nachricht, dass Internet eingeschaltet werden soll var message = new MessageDialog("Fehler! Keiner Internetverbindung."); await message.ShowAsync(); return(false); } }
/// <summary> /// UserID wird geholt und in File für Login geschrieben. /// </summary> /// <returns>Erfolg</returns> public static async Task <bool> GetUserInfo() { string stringFromServer = ""; Login id; bool internetVorhanden = BackEndComPartyLogik.IsInternet(); Login login = await DatenVerarbeitung.LoginAuslesen(); // aktueller Token wird benötigt bool erfolg = await DatenVerarbeitung.aktuellerToken(); Token tok = await DatenVerarbeitung.TokenAuslesen(); if (internetVorhanden == true && erfolg == true) { HttpClient client = GetClientUser(); HttpResponseMessage httpAntwort = new HttpResponseMessage(); client.DefaultRequestHeaders.Add("Authorization", "Bearer " + tok.AccessToken); try { httpAntwort = await client.GetAsync("connect/userinfo"); stringFromServer = await httpAntwort.Content.ReadAsStringAsync(); id = JsonConvert.DeserializeObject <Login>(stringFromServer); login.userID = id.userID; // ID in die Datei schreiben await DatenVerarbeitung.LoginSpeichern(login); return(true); } catch (Exception) { var message = new MessageDialog("Fehler! Bitte versuche es später erneut."); await message.ShowAsync(); return(false); } } else { // Nachricht, dass Internet eingeschaltet werden soll var message = new MessageDialog("Fehler! Keiner Internetverbindung."); await message.ShowAsync(); return(false); } }
/// <summary> /// Gibt Partys zurueck. /// </summary> /// <returns>Partys</returns> public static async Task <IEnumerable <Party> > GetParties(Location aktuellePosition, float radius) { string stringFromServer = ""; bool internetVorhanden = IsInternet(); IEnumerable <Party> partyListe = null; bool erfolg = await DatenVerarbeitung.aktuellerToken(); Token tok = await DatenVerarbeitung.TokenAuslesen(); if (internetVorhanden == true && erfolg == true) { HttpClient client = GetClientParty(); HttpResponseMessage httpAntwort = new HttpResponseMessage(); double latitude = aktuellePosition.Latitude; double longitude = aktuellePosition.Longitude; client.DefaultRequestHeaders.Add("Authorization", "Bearer " + tok.AccessToken); string anfrage = $"Party?lat={latitude}&lon={longitude}&radius={radius}"; // durch das Speichern in den String wird aus einem Punkt ein Komma, deshalb muss das danach ausgebessert werden anfrage = anfrage.Replace(',', '.'); try { httpAntwort = await client.GetAsync(anfrage); stringFromServer = await httpAntwort.Content.ReadAsStringAsync(); partyListe = JsonConvert.DeserializeObject <IEnumerable <Party> >(stringFromServer); } catch (Exception) { var message = new MessageDialog("Fehler! Bitte versuche es später erneut."); await message.ShowAsync(); } } else { // Nachricht, dass Internet eingeschaltet werden soll var message = new MessageDialog("Fehler! Keiner Internetverbindung."); await message.ShowAsync(); } return(partyListe); }
/// <summary> /// Post des Teilnahme-Status. /// </summary> /// <param name="party">Party, bei der sich der Teilnahme-Status ändert.</param> /// <param name="teilnahme">Teilnahmestatus</param> /// <returns></returns> public static async Task <bool> PutPartyCommitmentState(Party party, CommitmentParty teilnahme) { bool internetVorhanden = IsInternet(); bool teilnehmen = false; string nachricht = ""; Login login = await DatenVerarbeitung.LoginAuslesen(); Token tok = await BackEndComUserLogik.GetToken(login); if (internetVorhanden == true)// && erfolg == true) { HttpClient client = GetClientParty(); HttpResponseMessage httpAntwort = new HttpResponseMessage(); var json = JsonConvert.SerializeObject(teilnahme); client.DefaultRequestHeaders.Add("Authorization", "Bearer " + tok.AccessToken); HttpContent content = new StringContent(json, Encoding.UTF8, "application/json"); try { httpAntwort = await client.PutAsync($"UserParty/commitmentState?id={party.PartyId}", content); teilnehmen = httpAntwort.IsSuccessStatusCode; return(teilnehmen); } catch (Exception ex) { nachricht = "Error: " + ex.HResult.ToString("X") + " Message: " + ex.Message; var message = new MessageDialog("Fehler! Bitte versuche es später erneut."); await message.ShowAsync(); // Code 21 - Fehler bei Abrufen return(false); } } else { // Nachricht, dass Internet eingeschaltet werden soll // Code 42 - Fehler: Keine Internetverbindung var message = new MessageDialog("Fehler! Keiner Internetverbindung."); await message.ShowAsync(); return(false); } }
/// <summary> /// Validiert die eingegebene Adresse und gibt die Adresse laut Google zurueck. /// </summary> /// <param name="location">Zu pruefende Adresse</param> /// <returns>Location laut Google</returns> public static async Task <string> ValidateLocation(Location location) { bool internetVorhanden = IsInternet(); string adresseLautGoogle = ""; location.CountryName = "Deutschland"; bool aktuellerToken = await DatenVerarbeitung.aktuellerToken(); Token token = await DatenVerarbeitung.TokenAuslesen(); if (internetVorhanden == true && aktuellerToken == true) { HttpClient client = GetClientParty(); HttpResponseMessage httpAntwort = new HttpResponseMessage(); var jsonLocation = JsonConvert.SerializeObject(location); client.DefaultRequestHeaders.Add("Authorization", "Bearer " + token.AccessToken); HttpContent content = new StringContent(jsonLocation, Encoding.UTF8, "application/json"); try { httpAntwort = await client.PostAsync("Party/validate", content); adresseLautGoogle = await httpAntwort.Content.ReadAsStringAsync(); return(adresseLautGoogle); } catch (Exception) { var message = new MessageDialog("Fehler! Bitte versuche es später erneut."); await message.ShowAsync(); return("21"); } } else { // Nachricht, dass Internet eingeschaltet werden soll var message = new MessageDialog("Fehler! Keiner Internetverbindung."); await message.ShowAsync(); return("42"); } }
/// <summary> /// Post des Votings. /// </summary> /// <param name="party">Party, bei der gevotet wird.</param> /// <param name="voting">Voting</param> /// <returns></returns> public static async Task <bool> PutPartyRating(Party party, PartyVoting voting) { bool internetVorhanden = IsInternet(); bool erfolgreichesVoting = false; bool erfolg = await DatenVerarbeitung.aktuellerToken(); Token tok = await DatenVerarbeitung.TokenAuslesen(); if (internetVorhanden == true && erfolg == true) { HttpClient client = GetClientParty(); HttpResponseMessage httpAntwort = new HttpResponseMessage(); client.DefaultRequestHeaders.Add("Authorization", "Bearer " + tok.AccessToken); HttpContent content = new StringContent(JsonConvert.SerializeObject(voting), Encoding.UTF8, "application/json"); try { httpAntwort = await client.PutAsync($"UserParty/partyRating?id={party.PartyId}", content); erfolgreichesVoting = httpAntwort.IsSuccessStatusCode; return(erfolgreichesVoting); } catch (Exception) { var message = new MessageDialog("Fehler! Bitte versuche es später erneut."); await message.ShowAsync(); return(false); } } else { // Nachricht, dass Internet eingeschaltet werden soll var message = new MessageDialog("Fehler! Keiner Internetverbindung."); await message.ShowAsync(); return(false); } }
/// <summary> /// Loescht eine bestimmte Party (ID) vom Server. /// </summary> /// <param name="id">Zu loeschende Party</param> /// <returns>Erfolg</returns> public static async Task <bool> DeletePartyByID(Party party) { bool internetVorhanden = IsInternet(); bool status = false; bool erfolg = await DatenVerarbeitung.aktuellerToken(); Token token = await DatenVerarbeitung.TokenAuslesen(); if (internetVorhanden == true && erfolg == true) { HttpClient client = GetClientParty(); HttpResponseMessage httpAntwort = new HttpResponseMessage(); client.DefaultRequestHeaders.Add("Authorization", "Bearer " + token.AccessToken); try { httpAntwort = await client.DeleteAsync($"Party/?id={party.PartyId}"); status = httpAntwort.IsSuccessStatusCode; return(status); } catch (Exception) { var message = new MessageDialog("Fehler! Bitte versuche es später erneut."); await message.ShowAsync(); return(false); } } else { // Nachricht, dass Internet eingeschaltet werden soll var message = new MessageDialog("Fehler! Keiner Internetverbindung."); await message.ShowAsync(); return(false); } }
/// <summary> /// Schreibt einen aktuellen Token in die dafür vorgesehen Datei. Gibt den Erfolg der Aktion zurück. /// </summary> /// <returns></returns> public static async Task <bool> aktuellerToken() { bool erfolg = false; Login login = await DatenVerarbeitung.LoginAuslesen(); // Der Token wird aus der Datei ausgelesen Token aktuellerToken = await TokenAuslesen(); // Falls in dieser Datei kein Token ist, wird ein neuer Token geholt if (aktuellerToken.AccessToken == null) { aktuellerToken = await BackEndComUserLogik.GetToken(login); if (aktuellerToken.AccessToken != null) { erfolg = await TokenSpeichern(aktuellerToken); } else { erfolg = false; } } else { erfolg = true; } if (erfolg == true) { // Der Token wird refresht, dass er verwendet werden kann erfolg = await BackEndComUserLogik.RefreshToken(aktuellerToken); if (erfolg == true) { erfolg = await DatenVerarbeitung.TokenSpeichern(aktuellerToken); } } return(erfolg); }
/// <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; } }