示例#1
0
		//
		// GET: /Profile/Index
		public async Task<ActionResult> Index(ProfileMessageId? message)
		{
			ViewBag.StatusMessage =
				message == ProfileMessageId.ChangePasswordSuccess ? "Your password has been changed."
				: message == ProfileMessageId.SetPasswordSuccess ? "Your password has been set."
				: message == ProfileMessageId.SetTwoFactorSuccess ? "Your two-factor authentication provider has been set."
				: message == ProfileMessageId.Error ? "An error has occurred."
				: message == ProfileMessageId.AddPhoneSuccess ? "Your phone number was added."
				: message == ProfileMessageId.RemovePhoneSuccess ? "Your phone number was removed."
				: "";


			UserProfile profile = CurrentUserProfileOrThrow;
			GStoreData.Identity.AspNetIdentityUser aspUser = profile.AspNetIdentityUser();

			var model = new ProfileViewModel
			{
				HasPassword = HasPassword(),
				PhoneNumber = aspUser.PhoneNumber,
				TwoFactor = await UserManager.GetTwoFactorEnabledAsync(User.Identity.GetUserId()),
				Logins = await UserManager.GetLoginsAsync(User.Identity.GetUserId()),
				BrowserRemembered = await AuthenticationManager.TwoFactorBrowserRememberedAsync(User.Identity.GetUserId()),
				EmailConfirmed = aspUser.EmailConfirmed,
				PhoneNumberConfirmed = aspUser.PhoneNumberConfirmed,
				AspNetIdentityUser = aspUser,
				UserProfile = profile
			};
			return View(model);
		}
        public ActionResult SentMessages(ProfileMessageId? message)
        {
            User currentUser = manager.FindById(User.Identity.GetUserId());
            var messages = db.Messages.Where(m => m.FromUser.UserName == currentUser.UserName && !m.DeletedBySender)
                .OrderBy(m => m.IsRead)
                .ThenByDescending(m => m.TimeSent);

            ViewBag.TotalCount = messages.Count();

            return View(messages.ToList());
        }
        public ActionResult Index(ProfileMessageId? message)
        {
            User currentUser = manager.FindById(User.Identity.GetUserId());
            var messages = db.Messages.Where(m => m.ToUser.UserName == currentUser.UserName && !m.DeletedByRecipient)
                .OrderBy(m => m.IsRead)
                .ThenByDescending(m => m.TimeSent);

            ViewBag.TotalCount = messages.Count();
            ViewBag.NewCount = messages.Where(m => !m.IsRead).Count();

            ViewBag.SuccessMessage =
                message == ProfileMessageId.SentMessage ? "Your message has been sent."
                : "";

            return View(messages.ToList());
        }
示例#4
0
		//
		// GET: /Profile/ProfileLogins
		public async Task<ActionResult> Logins(ProfileMessageId? message)
		{
			ViewBag.StatusMessage =
				message == ProfileMessageId.RemoveLoginSuccess ? "The external login was removed."
				: message == ProfileMessageId.Error ? "An error has occurred."
				: "";
			var user = await UserManager.FindByIdAsync(User.Identity.GetUserId());
			if (user == null)
			{
				throw new ApplicationException("Cannot find user name: " + User.Identity.Name);
			}
			var userLogins = await UserManager.GetLoginsAsync(User.Identity.GetUserId());
			var otherLogins = AuthenticationManager.GetExternalAuthenticationTypes().Where(auth => userLogins.All(ul => auth.AuthenticationType != ul.LoginProvider)).ToList();
			ViewBag.ShowRemoveButton = user.PasswordHash != null || userLogins.Count > 1;
			return View(new ProfileLoginsViewModel
			{
				CurrentLogins = userLogins,
				OtherLogins = otherLogins
			});
		}
        // GET: Profile
        public ActionResult Index(String username, ProfileMessageId? message)
        {
            System.Diagnostics.Trace.WriteLine("Profile.Index");
            System.Diagnostics.Debug.WriteLine("Profile.Index");
            User profileUser = manager.FindById(User.Identity.GetUserId());
            ViewBag.IsConnected = false;
            ViewBag.HasConnectionRequest = false;
            ViewBag.HasSentRequest = false;
            ViewBag.HasRequests = false;

            if (username != null && !username.Equals(profileUser.UserName)) //Traveling to another user's profile
            {
                profileUser = db.Users.Where(user => user.UserName == username).First();
                ViewBag.IsPrivate = profileUser.Private; //Tells the view what to display based on user settings
                ViewBag.IsOnOwnProfile = false;

                // Check if the two users are already connected some way (if this is a logged in user)
                User currentUser = manager.FindById(User.Identity.GetUserId());
                if (currentUser != null)
                {
                    // Check for connection
                    var connection = db.Connections.Where(c => (c.User1.UserName == currentUser.UserName && c.User2.UserName == profileUser.UserName) ||
                        (c.User2.UserName == currentUser.UserName && c.User1.UserName == profileUser.UserName));
                    if (connection.Count() > 0)
                    {
                        ViewBag.IsConnected = true;
                    }

                    // Check if the person whose profile we're looking at has sent a ConnectionRequest
                    var requestTo = db.ConnectionRequests.Where(c => (c.RequestedUser.UserName == currentUser.UserName && c.Sender.UserName == profileUser.UserName));
                    if (requestTo.Count() > 0)
                    {
                        ViewBag.HasConnectionRequest = true;
                    }
                    else
                    {
                        var requestFrom = db.ConnectionRequests.Where(c => (c.Sender.UserName == currentUser.UserName && c.RequestedUser.UserName == profileUser.UserName));
                        if (requestFrom.Count() > 0)
                        {
                            ViewBag.HasSentRequest = true;
                        }
                    }
                }
            }
            else //Traveling to personal profile page
            {
                ViewBag.IsOnOwnProfile = true;
                ViewBag.IsPrivate = false;  //A user would never be private to them self.

                var requests = db.ConnectionRequests.Where(u => u.RequestedUser.UserName == profileUser.UserName);
                if(requests.Count() > 0)
                {
                    ViewBag.HasRequests = true;
                }
            }

            //add user rankings
            var allUsers = db.Users.ToList();
                // sort the users by their contributions, but only count it if they have at least 1 contribution
            var topUsers = allUsers
                .Where(u => u.TotalContributions() > 0)
                .OrderByDescending(e => e.TotalContributions())
                .ToList();

            ViewBag.LeaderboardOverall = "Not Ranked";
            for (int i = 0; i < topUsers.Count; i++)
            {
                if (topUsers.ElementAt(i).Id == profileUser.Id)
                {
                    ViewBag.LeaderboardOverall = i + 1;
                }
            }

            var topReviewers = allUsers
                .Where(u => u.TotalReviews() > 0)
                .OrderByDescending(e => e.TotalReviews())
                .ToList();

            ViewBag.LeaderboardReview = "Not Ranked";
            for (int i = 0; i < topReviewers.Count; i++)
            {
                if (topReviewers.ElementAt(i).Id == profileUser.Id)
                {
                    ViewBag.LeaderboardReview = i + 1;
                }
            }

            var topMediaUploaders = allUsers
                .Where(u => u.TotalMediaItems() > 0)
                .OrderByDescending(e => e.TotalMediaItems())
                .ToList();

            ViewBag.onLeaderboardMedia = "Not Ranked";
            for (int i = 0; i < topMediaUploaders.Count; i++)
            {
                if (topMediaUploaders.ElementAt(i).Id == profileUser.Id)
                {
                    ViewBag.onLeaderboardMedia = i + 1;
                }
            }

            //add user activities
            List<UserRecreation> ur = db.UserRecreations.Where(u => u.User == profileUser.Id).ToList();
            profileUser.UserActivities = ur;

            //add user reviews
            List<Review> uRV = db.Reviews.Where(r => r.User.Id == profileUser.Id).ToList().OrderByDescending(t => t.ReviewDate).Take(5).ToList();
            //uRV.OrderByDescending(t => t.ReviewDate).Take(5).ToList();
            profileUser.UserReviews = uRV;

            //add user bookmarks
            List<LocationFlag> locationFlags = db.LocationFlags.Include(l => l.Location).Where(f => f.User.Id == profileUser.Id).ToList();
            if (locationFlags.Count > 0)
            {
                ViewBag.HasSavedLocations = true;
                // Fill the three lists with their respective LocationFlags
                profileUser.BeenThereLocations = locationFlags.Where(l => l.Flag == Flag.HaveBeen).ToList();
                profileUser.WantToGoLocations = locationFlags.Where(l => l.Flag == Flag.WantToGo).ToList();
                profileUser.GoAgainLocations = locationFlags.Where(l => l.Flag == Flag.GoAgain).ToList();
                ViewBag.centerLatitude = 39.8282;
                ViewBag.centerLongitude = -98.5795;
            }
            else
            {
                ViewBag.HasSavedLocations = false;
            }

            //add user's location images
            List<LocationImage> images = db.LocationImages.Where(i => i.User.Id == profileUser.Id).ToList();
            List<LocationImage> smallImage = new List<LocationImage>();
            int count = 0;
            while (smallImage.Count < 5 && count < images.Count)
            {
                smallImage.Add(images.ElementAt(count));
                count++;
            }
            ViewBag.ImagesCount = images.Count();
            profileUser.UserLocationImages = smallImage;

            //add user's location videos
            List<Video> videos = db.Videos.Where(i => i.User.Id == profileUser.Id).ToList();
            List<Video> smallVideo = new List<Video>();
            int countVid = 0;
            while (smallVideo.Count < 4 && countVid < videos.Count)
            {
                smallVideo.Add(videos.ElementAt(countVid));
                countVid++;
            }
            ViewBag.VideosCount = videos.Count();
            profileUser.UserLocationVideos = smallVideo;


            ViewBag.SuccessMessage =
                message == ProfileMessageId.ConnectionSuccess ? "Congratulations! You are now connected to " + profileUser.UserName + "."
                : message == ProfileMessageId.RequestSuccess ? "Congratulations! You have sent a connection request to " + profileUser.UserName + "."
                : message == ProfileMessageId.ConnectionFailure ? "Sorry, we couldn't make that happen."
                : message == ProfileMessageId.DenySuccess ? "You have successfully denied being connected to " + profileUser.UserName + "."
                : message == ProfileMessageId.SentMessage ? "Your message has been sent to " + profileUser.UserName + "."
                : "";

            return View(profileUser);
        }