public async Task<MyDriving.DataObjects.UserProfile> Get()
        {
            //return the current authenticated user profile
            ClaimsPrincipal user = User as ClaimsPrincipal;
            bool? isAuthenticated = user?.Identity?.IsAuthenticated;

            if (!isAuthenticated.GetValueOrDefault())
            {
                return null;
            }

            var userId = string.Empty;
            // Get the credentials for the logged-in user.
            var fbCredentials = await user.GetAppServiceIdentityAsync<FacebookCredentials>(Request);
            var msCredentials = await user.GetAppServiceIdentityAsync<MicrosoftAccountCredentials>(Request);
            var twitterCredentials = await user.GetAppServiceIdentityAsync<TwitterCredentials>(Request);

            string first = string.Empty, last = string.Empty, profile = string.Empty;
            userId = await IdentitiyHelper.FindSidAsync(User, Request);
            if (fbCredentials?.UserClaims?.Count() > 0)
            {
                FillDataFromFacebook(fbCredentials, out first, out last, out profile);
            }
            else if (msCredentials?.UserClaims?.Count() > 0)
            {
                FillDataFromMS(msCredentials, out first, out last, out profile);
            }
            else if (twitterCredentials?.UserClaims?.Count() > 0)
            {
                FillDataFromTwitter(twitterCredentials, out first, out last, out profile);
            }
            else
            {
                return null;
            }


            var context = new MyDrivingContext();

            var curUser = context.UserProfiles.FirstOrDefault(u => u.UserId == userId);

            if (curUser == null)
            {
                curUser = new MyDriving.DataObjects.UserProfile
                {
                    UserId = userId,
                    ProfilePictureUri = profile,
                    FirstName = first,
                    LastName = last
                };
                context.UserProfiles.Add(curUser);
            }
            else
            {
                curUser.FirstName = first;
                curUser.LastName = last;
                curUser.ProfilePictureUri = profile;
            }

            await context.SaveChangesAsync();

            return curUser;
        }
Example #2
0
        public async Task <MyDriving.DataObjects.UserProfile> Get()
        {
            //return the current authenticated user profile
            ClaimsPrincipal user            = User as ClaimsPrincipal;
            bool?           isAuthenticated = user?.Identity?.IsAuthenticated;

            if (!isAuthenticated.GetValueOrDefault())
            {
                return(null);
            }

            var userId = string.Empty;
            // Get the credentials for the logged-in user.
            var fbCredentials = await user.GetAppServiceIdentityAsync <FacebookCredentials>(Request);

            var msCredentials = await user.GetAppServiceIdentityAsync <MicrosoftAccountCredentials>(Request);

            var twitterCredentials = await user.GetAppServiceIdentityAsync <TwitterCredentials>(Request);

            string first = string.Empty, last = string.Empty, profile = string.Empty;

            userId = await IdentitiyHelper.FindSidAsync(User, Request);

            if (fbCredentials?.UserClaims?.Count() > 0)
            {
                FillDataFromFacebook(fbCredentials, out first, out last, out profile);
            }
            else if (msCredentials?.UserClaims?.Count() > 0)
            {
                FillDataFromMS(msCredentials, out first, out last, out profile);
            }
            else if (twitterCredentials?.UserClaims?.Count() > 0)
            {
                FillDataFromTwitter(twitterCredentials, out first, out last, out profile);
            }
            else
            {
                return(null);
            }


            var context = new MyDrivingContext();

            var curUser = context.UserProfiles.FirstOrDefault(u => u.UserId == userId);

            if (curUser == null)
            {
                curUser = new MyDriving.DataObjects.UserProfile
                {
                    UserId            = userId,
                    ProfilePictureUri = profile,
                    FirstName         = first,
                    LastName          = last
                };
                context.UserProfiles.Add(curUser);
            }
            else
            {
                curUser.FirstName         = first;
                curUser.LastName          = last;
                curUser.ProfilePictureUri = profile;
            }

            await context.SaveChangesAsync();

            return(curUser);
        }