public UserInfoForHomePageModelContainer ReadUserInfoForProfilePage(int userId, UserIdentity userIdentity)
        {
            var user = UserBiz.Read(u => u.Id == userId)
                       .Include(u => u.Membership)
                       .Include(u => u.EducationalResumes.Select(x => x.Organization))
                       .Include(u => u.EducationalResumes.Select(x => x.UniversityField))
                       .Include(u => u.JobResumes.Select(x => x.Organization))
                       .Include(u => u.JobResumes.Select(x => x.Job))
                       .Single();
            var profileKeyValues = ProfileBiz.ReadUserProfileValues(userId,
                                                                    ProfileKeyValueType.WebSiteUrl,
                                                                    ProfileKeyValueType.FacebookUrl,
                                                                    ProfileKeyValueType.TwitterUrl,
                                                                    ProfileKeyValueType.LinkedInUrl,
                                                                    ProfileKeyValueType.AboutMe);
            var userBlog = BlogBiz.ReadSingleOrDefault(b => b.CreatorId == userId);

            return(new UserInfoForHomePageModelContainer()
            {
                UserId = userId,
                FirstName = user.FirstName,
                LastName = user.LastName,
                AboutMe = profileKeyValues.SingleOrDefault(kv => kv.Type == ProfileKeyValueType.AboutMe)?.Value,
                WebSiteUrl = profileKeyValues.SingleOrDefault(kv => kv.Type == ProfileKeyValueType.WebSiteUrl)?.Value,
                FacebookUrl = profileKeyValues.SingleOrDefault(kv => kv.Type == ProfileKeyValueType.FacebookUrl)?.Value,
                TwitterUrl = profileKeyValues.SingleOrDefault(kv => kv.Type == ProfileKeyValueType.TwitterUrl)?.Value,
                LinkedInUrl = profileKeyValues.SingleOrDefault(kv => kv.Type == ProfileKeyValueType.LinkedInUrl)?.Value,
                TotalArticles = ArticleBiz.ReadUserPublishedContents(userId, ContentType.Article).Count(),
                TotalBlogPosts = ArticleBiz.ReadUserPublishedContents(userId, ContentType.BlogPost).Count(),
                TotalVisits = VisitBiz.ReadUserTodayTotalVisits(userId),
                LatestArticles = ArticleBiz.ReadUserLatestPublishedArticles(userId, 200).MapTo <ContentInfo2PM>().ToList(),
                LatestBlogPosts = BlogBiz.ReadUserLatestPosts(userId, 5).MapTo <ContentInfo2PM>().ToList(),
                EducationalResumes = user.EducationalResumes.OrderByDescending(x => x.EducationGrade).Select(x => x.GetPresentationModel()).ToList(),
                JobResumes = user.JobResumes.OrderByDescending(x => x.StartYear).Select(x => x.GetPresentationModel()).ToList(),
                WeblogName = userBlog?.Name,
                RegistrationDateString = user.Membership.CreateDate.ToPersianDate(),
                CurrentUserFollowsThisUser = userIdentity != null?FollowBiz.AnyFollow(userIdentity.UserId, userId) : false,
                                                 Followers = FollowBiz.ReadFollowersCount(userId)
            });
        }
 public DataSourceResult ReadUserPosts(UserIdentity user, DataSourceRequest request)
 {
     return(BlogBiz.ReadUserLatestPosts(user.UserId)
            .MapTo <ContentInfo5PM>()
            .ToDataSourceResult(request));
 }