コード例 #1
0
        /// <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);
            }
        }
コード例 #2
0
        /// <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);
            }
        }
コード例 #3
0
        /// <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);
        }
コード例 #4
0
        /// <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);
            }
        }
コード例 #5
0
        /// <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");
            }
        }
コード例 #6
0
        /// <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);
            }
        }
コード例 #7
0
        /// <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);
            }
        }
コード例 #8
0
        /// <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);
        }
コード例 #9
0
        /// <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;
            }
        }