예제 #1
0
        // 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));
        }