// // 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()); }
// // 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); }