Beispiel #1
0
        //method we will call to get the users data
        //pass in grid so we can switch visibility when data is ready
        public async void getSignedInUser(Grid userProfileGrid, ProgressBar progressBar)
        {

            //variable to hold response
            string returnedUserJson=null;
            //use this bool to check for any errors that occur
            bool hasError = false;

            //place web calls in try catch block just incase a network error occurs
            //try catch will also stop app from crashing if error does occur
            try
            {
                //client.getStringAsync will make the asynchronous call to the desired url
                //the response (json string) will be stored into the returnedUser string
                returnedUserJson = await client.GetStringAsync(url);
            }
            catch
            {
                //set error to true because a web exception occurred
                hasError = true;
            }
            

            //if has error is false then we can deserialize the string
            if(!hasError)
            {
                //bool to signify error
                bool jsonError = false;

                //the object we will deserialize to
                UserClass.RootObject uc = null;

                //try catch json incase some unknown error happens like an int being set to null
                try
                {
                    //let Json.Net deserialize the json string. passing in the json string we recieved and the typeof
                    uc = (UserClass.RootObject)JsonConvert.DeserializeObject(returnedUserJson, typeof(UserClass.RootObject));
                }
                catch
                {
                    //if there was an error
                    jsonError = true;
                }
                
                //if there was no error then let us set our variables
                if(!jsonError)
                {
                    
                    //we take the variables we need from the json and put it into our userProfile list
                    //UserProfile.Add(new UserProfile()
                    //{
                    //    firstName = uc.response.user.firstName,
                    //    lastName = uc.response.user.lastName,
                    //    hometown = uc.response.user.homeCity,
                    //    tipCount = uc.response.user.tips.count,
                    //    badgesCount = uc.response.user.badges.count,
                    //    checkInCount = uc.response.user.checkins.count,
                    //    friendCount = uc.response.user.friends.count,
                    //    email = uc.response.user.contact.email,
                    //    image = uc.response.user.photo.prefix + "original" + uc.response.user.photo.suffix,
                    //    maxScore = uc.response.user.scores.max,
                    //    recentScore = uc.response.user.scores.recent,
                    //    mayorshipCount = uc.response.user.mayorships.count,
                    //    lastLocation = uc.response.user.firstName + " " +uc.response.user.lastName + " at " + uc.response.user.checkins.items.First().venue.name,
                    //    lastLongitudeLocation = uc.response.user.checkins.items.First().venue.location.lng,
                    //    lastLatitudeLocation =uc.response.user.checkins.items.First().venue.location.lat
                    //});

                    //set variables the long way because of null classes that can be sent back if you have an unused account
                    UserItem up = new ClassFolder.UserItem();
                        up.firstName = uc.response.user.firstName;
                        up.lastName = uc.response.user.lastName;
                        up.hometown = uc.response.user.homeCity;
                        up.tipCount = uc.response.user.tips.count;
                        up.badgesCount = uc.response.user.badges.count;
                        up.checkInCount = uc.response.user.checkins.count;
                        up.friendCount = uc.response.user.friends.count;
                        up.email = uc.response.user.contact.email;
                        up.image = uc.response.user.photo.prefix + "original" + uc.response.user.photo.suffix;

                        //when a user has no recent or max score the server returns null to the class
                        //we need to do this so that the any variables used inside scores class have a default value
                        if (uc.response.user.scores == null)
                        {
                            up.maxScore = 0;
                            up.recentScore = 0;
                        }    
                        else
                        {
                            up.maxScore = uc.response.user.scores.max;
                            up.recentScore = uc.response.user.scores.recent;
                        }
                        
                        up.mayorshipCount = uc.response.user.mayorships.count;

                        //have to check count of checkin items. for someone who has never checked in the class will be null
                        //causing the application to crash
                        if(uc.response.user.checkins.items.Count > 0)
                        {
                            up.lastLocation = uc.response.user.firstName + " " + uc.response.user.lastName + " at " + uc.response.user.checkins.items.First().venue.name;
                            up.lastLongitudeLocation = uc.response.user.checkins.items.First().venue.location.lng;
                            up.lastLatitudeLocation = uc.response.user.checkins.items.First().venue.location.lat;

                            //finally add user to list
                            UserProfile.Add(up);
                            up = null;

                            //set map coordinates if there was a last known place
                            setMapToLastVisitedLocation(new GeoCoordinate() { Latitude = UserProfile[0].lastLatitudeLocation, Longitude = userProfile[0].lastLongitudeLocation });
                        }
                        else
                        {
                            up.lastLocation = uc.response.user.firstName + " " + uc.response.user.lastName + " has no last known location";

                            //finally add user to list
                            UserProfile.Add(up);
                            up = null;
                            
                        }
                        
                    //change visibility to make profile grid visible
                    //and make visibility of progress bar collapsed
                    Deployment.Current.Dispatcher.BeginInvoke(() =>
                        {
                            
                            userProfileGrid.Visibility = Visibility.Visible;
                            progressBar.Visibility = Visibility.Collapsed;
                            progressBar.IsEnabled = false;
                        });

                    
                }
                

            }
            //there was an error so just stop the loading and pop up a message box
            else
            {

            }

        }
Beispiel #2
0
        //method we will call to get the users data
        //pass in grid so we can switch visibility when data is ready
        public async void getSignedInUser(Grid userProfileGrid, ProgressBar progressBar)
        {
            //variable to hold response
            string returnedUserJson = null;
            //use this bool to check for any errors that occur
            bool hasError = false;

            //place web calls in try catch block just incase a network error occurs
            //try catch will also stop app from crashing if error does occur
            try
            {
                //client.getStringAsync will make the asynchronous call to the desired url
                //the response (json string) will be stored into the returnedUser string
                returnedUserJson = await client.GetStringAsync(url);
            }
            catch
            {
                //set error to true because a web exception occurred
                hasError = true;
            }


            //if has error is false then we can deserialize the string
            if (!hasError)
            {
                //bool to signify error
                bool jsonError = false;

                //the object we will deserialize to
                UserClass.RootObject uc = null;

                //try catch json incase some unknown error happens like an int being set to null
                try
                {
                    //let Json.Net deserialize the json string. passing in the json string we recieved and the typeof
                    uc = (UserClass.RootObject)JsonConvert.DeserializeObject(returnedUserJson, typeof(UserClass.RootObject));
                }
                catch
                {
                    //if there was an error
                    jsonError = true;
                }

                //if there was no error then let us set our variables
                if (!jsonError)
                {
                    //we take the variables we need from the json and put it into our userProfile list
                    //UserProfile.Add(new UserProfile()
                    //{
                    //    firstName = uc.response.user.firstName,
                    //    lastName = uc.response.user.lastName,
                    //    hometown = uc.response.user.homeCity,
                    //    tipCount = uc.response.user.tips.count,
                    //    badgesCount = uc.response.user.badges.count,
                    //    checkInCount = uc.response.user.checkins.count,
                    //    friendCount = uc.response.user.friends.count,
                    //    email = uc.response.user.contact.email,
                    //    image = uc.response.user.photo.prefix + "original" + uc.response.user.photo.suffix,
                    //    maxScore = uc.response.user.scores.max,
                    //    recentScore = uc.response.user.scores.recent,
                    //    mayorshipCount = uc.response.user.mayorships.count,
                    //    lastLocation = uc.response.user.firstName + " " +uc.response.user.lastName + " at " + uc.response.user.checkins.items.First().venue.name,
                    //    lastLongitudeLocation = uc.response.user.checkins.items.First().venue.location.lng,
                    //    lastLatitudeLocation =uc.response.user.checkins.items.First().venue.location.lat
                    //});

                    //set variables the long way because of null classes that can be sent back if you have an unused account
                    UserItem up = new ClassFolder.UserItem();
                    up.firstName    = uc.response.user.firstName;
                    up.lastName     = uc.response.user.lastName;
                    up.hometown     = uc.response.user.homeCity;
                    up.tipCount     = uc.response.user.tips.count;
                    up.badgesCount  = uc.response.user.badges.count;
                    up.checkInCount = uc.response.user.checkins.count;
                    up.friendCount  = uc.response.user.friends.count;
                    up.email        = uc.response.user.contact.email;
                    up.image        = uc.response.user.photo.prefix + "original" + uc.response.user.photo.suffix;

                    //when a user has no recent or max score the server returns null to the class
                    //we need to do this so that the any variables used inside scores class have a default value
                    if (uc.response.user.scores == null)
                    {
                        up.maxScore    = 0;
                        up.recentScore = 0;
                    }
                    else
                    {
                        up.maxScore    = uc.response.user.scores.max;
                        up.recentScore = uc.response.user.scores.recent;
                    }

                    up.mayorshipCount = uc.response.user.mayorships.count;

                    //have to check count of checkin items. for someone who has never checked in the class will be null
                    //causing the application to crash
                    if (uc.response.user.checkins.items.Count > 0)
                    {
                        up.lastLocation          = uc.response.user.firstName + " " + uc.response.user.lastName + " at " + uc.response.user.checkins.items.First().venue.name;
                        up.lastLongitudeLocation = uc.response.user.checkins.items.First().venue.location.lng;
                        up.lastLatitudeLocation  = uc.response.user.checkins.items.First().venue.location.lat;

                        //finally add user to list
                        UserProfile.Add(up);
                        up = null;

                        //set map coordinates if there was a last known place
                        setMapToLastVisitedLocation(new GeoCoordinate()
                        {
                            Latitude = UserProfile[0].lastLatitudeLocation, Longitude = userProfile[0].lastLongitudeLocation
                        });
                    }
                    else
                    {
                        up.lastLocation = uc.response.user.firstName + " " + uc.response.user.lastName + " has no last known location";

                        //finally add user to list
                        UserProfile.Add(up);
                        up = null;
                    }

                    //change visibility to make profile grid visible
                    //and make visibility of progress bar collapsed
                    Deployment.Current.Dispatcher.BeginInvoke(() =>
                    {
                        userProfileGrid.Visibility = Visibility.Visible;
                        progressBar.Visibility     = Visibility.Collapsed;
                        progressBar.IsEnabled      = false;
                    });
                }
            }
            //there was an error so just stop the loading and pop up a message box
            else
            {
            }
        }