// GET: Profile public ActionResult Index() { object profileId = Request.RequestContext.RouteData.Values["id"]; string currentUserId = User.Identity.GetUserId(); if (string.IsNullOrWhiteSpace((string)profileId)) { profileId = currentUserId; } // Add user to visitor list for the visited profile, but remove them first if they're already in the 5 latest if (!string.Equals(currentUserId, (string)profileId)) { List <VisitorModels> allVisitors = visitorRepository.GetAllVisitorsByUserId((string)profileId); // Everyone who has looked at this profile if (allVisitors.Any((v) => v.VisitFromId.Equals(currentUserId))) // If current user has already visited this profile { visitorRepository.Remove(visitorRepository.GetVisitIdByVisitFromUserId((string)profileId, currentUserId)); // Remove the visit by the current user } VisitorModels visitor = new VisitorModels { VisitDateTime = DateTime.Now, VisitFromId = currentUserId, VisitToId = (string)profileId }; visitorRepository.Add(visitor); visitorRepository.Save(); } ProfileModels userProfile = profileRepository.Get((string)profileId); List <PostModels> posts = postRepository.GetAllPostsForUserById((string)profileId); List <FriendModels> friends = friendRepository.GetAllFriendsByUserId((string)profileId); PostViewModelsForUsers postViewModelForUsers = ConvertPostToPostViewModelForUsers(posts, (string)profileId); FriendViewModelsForUsers friendViewModelsForUsers = ConvertFriendToFriendViewModelsForUsers(friends, (string)profileId); ProfileViewModel userProfileViewModel = new ProfileViewModel { Id = userProfile.Id, FirstName = userProfile.FirstName, LastName = userProfile.LastName, Gender = userProfile.Gender, Biography = userProfile.Biography, BirthDate = userProfile.BirthDate.ToShortDateString(), IsActive = userProfile.IsActive, Posts = postViewModelForUsers, Friends = friendViewModelsForUsers, ProfileImage = userProfile.ProfileImage }; ViewBag.ProfileRelation = GetProfileRelation((string)profileId); return(View(userProfileViewModel)); }