public ViewBlogPostModelContainer ReadPostForViewByVisitor(string publicationName, int postId) { var content = BlogBiz.ReadPostForViewByVisitor(publicationName, postId); VisitBiz.IncrementContentVisits(content.Id); UnitOfWork.SaveChanges(); return(new ViewBlogPostModelContainer() { BlogInfo = BlogBiz.Read(b => b.Id == content.PublicationId).MapTo <BlogInfoPM>().Single(), Post = content.GetContentInfoWithTextPM(), Tags = content.Tags.Select(tag => tag.GetPresentationModel()).ToList(), ArchiveItems = PublicationBiz.ReadPublicationArchivedItemsCalendar(content.PublicationId.Value, ContentType.BlogPost) .Select(item => new ContentArchiveItemPM(item.Item1, item.Item2)), Links = BlogBiz.ReadBlogLinks(content.PublicationId.Value) .MapTo <BlogLinkPM>() .ToList(), Comments = content.Comments .Where(comment => !comment.IsPrivate) .Select(comment => comment.GetCommentInfoPM()).ToList(), LatestPosts = BlogBiz.ReadUserPublishedPostsForViewByVisitor(content.Publication.CreatorId) .Take(10) .MapTo <ContentInfoWithTextPM>() .ToList() }); }
public VisitorHomePageModelContainer ReadStatisticsForHomePage() { var topVisits = VisitBiz.Read().GroupBy(r => r.ContentId) .Select(group => new { ContentId = group.Key, TotalVisit = group.Sum(r => r.Count) }) .OrderByDescending(r => r.TotalVisit) .Take(AppConfigurationManager.TopArticlesNumber); var topArticlesVisits = from a in ArticleBiz.ReadPublishedArticles() join av in topVisits on a.Id equals av.ContentId select new { a, av.TotalVisit }; var topArticles = topArticlesVisits.OrderByDescending(t => t.TotalVisit).Select(t => t.a); return(new VisitorHomePageModelContainer() { TopArticles = topArticles.MapTo <ContentInfo6PM>() .ToList(), LatestArticles = ArticleBiz.ReadLatestArticles(AppConfigurationManager.LatestArticlesNumber) .MapTo <ContentInfo6PM>() .ToList(), FeaturedArticles = FeaturedContentBiz.ReadFeaturedArticles().MapTo <ContentInfo6PM>().ToList(), }); }
public IEnumerable <KeyValuePair <string, int> > GetContentVisitChartDataForUserDashboard(int userId, ContentType contentType) { var chartData = VisitBiz.GetContentVisitChartDataForUserDashboard(userId, contentType); ChartDataHelper.FillBlankDays <ChartData>(chartData); return(chartData.Select(data => new KeyValuePair <string, int>(data.Date.ToPersianDate("MMDD"), data.Value))); }
public ArticleService() { UnitOfWork = new CoreUnitOfWork(); ArticleBiz = new ArticleBiz(UnitOfWork); VisitBiz = new VisitBiz(UnitOfWork); CommentBiz = new CommentBiz(UnitOfWork); TagBiz = new TagBiz(UnitOfWork); }
public IEnumerable <ChartData> GetAuthorTotalBlogPostsChartData(UserIdentity user) { return(VisitBiz.Read(v => v.Content.AuthorId == user.UserId && v.Content.Type == ContentType.BlogPost, true).GroupBy(v => DbFunctions.TruncateTime(v.Date)) .Select(group => new ChartData { Date = group.Key.Value, Value = group.Sum(visit => visit.Count) }) .OrderBy(v => v.Date)); }
public IEnumerable <ChartData> GetSiteTotalVisistsByDate() { return(VisitBiz.Read(v => true, true).GroupBy(v => DbFunctions.TruncateTime(v.Date)) .Select(group => new ChartData { Date = group.Key.Value, Value = group.Sum(visit => visit.Count) }) .OrderBy(v => v.Date)); }
public BlogService(IPushNotificationProvider pushNotificationProvider) { UnitOfWork = new CoreUnitOfWork(); BlogBiz = new BlogBiz(UnitOfWork); PublicationBiz = new PublicationBiz(UnitOfWork); TagBiz = new TagBiz(UnitOfWork); FriendBiz = new BlogLinkBiz(UnitOfWork); ContentBiz = new ContentBiz(UnitOfWork); VisitBiz = new VisitBiz(UnitOfWork); PushNotificationProvider = pushNotificationProvider; }
public AppStatisticsService() { UnitOfWork = new CoreUnitOfWork(); ArticleBiz = new ArticleBiz(UnitOfWork); BlogBiz = new BlogBiz(UnitOfWork); VisitBiz = new VisitBiz(UnitOfWork); UserBiz = new UserBiz(UnitOfWork); CommentBiz = new CommentBiz(UnitOfWork); MessageBiz = new MessageBiz(UnitOfWork); FeaturedContentBiz = new FeaturedContentBiz(UnitOfWork); }
public UserProfileService() { UnitOfWork = new CoreUnitOfWork(); UserBiz = new UserBiz(UnitOfWork); MembershipBiz = new MembershipBiz(UnitOfWork); ProfileBiz = new ProfileBiz(UnitOfWork); ArticleBiz = new ArticleBiz(UnitOfWork); BlogBiz = new BlogBiz(UnitOfWork); EducationalResumeBiz = new EducationalResumeBiz(UnitOfWork); VisitBiz = new VisitBiz(UnitOfWork); JobResumeBiz = new JobResumeBiz(UnitOfWork); FollowBiz = new FollowBiz(UnitOfWork); }
public ViewBlogPostModelContainer ReadPostForPreview(string publicationName, int postId) { var content = BlogBiz.ReadPostForPreview(publicationName, postId); VisitBiz.IncrementContentVisits(content.Id); UnitOfWork.SaveChanges(); return(new ViewBlogPostModelContainer() { BlogInfo = BlogBiz.Read(b => b.Id == content.PublicationId).MapTo <BlogInfoPM>().Single(), Post = content.GetContentInfoWithTextPM(), Tags = content.Tags.Select(tag => tag.GetPresentationModel()).ToList(), }); }
public DashboardModelContainer GetUserDashboardData(int userId) { var today = DateTime.Now.Date; return(new DashboardModelContainer() { PendingComments = CommentBiz.ReadNotConfirmedComments(userId).Take(4).MapTo <CommentInfoPM>().ToList(), ArticlesCount = ArticleBiz.ReadUserPublishedContents(userId, ContentType.Article).Count(), BlogPostsCount = BlogBiz.ReadUserTotalPublishedPostsCount(userId), TodayTotallVisits = VisitBiz.ReadUserTodayTotalVisits(userId), LatestMessages = MessageBiz.ReadUserMessages(userId, 4).MapTo <MessagePM>().ToList() }); }
public ViewArticleModelContainer ReadArticleForViewByVisitor(int contentId) { var content = ArticleBiz.ReadArticleForViewByVisitor(contentId); VisitBiz.IncrementContentVisits(contentId); UnitOfWork.SaveChanges(); int totalVisits = 0; try { totalVisits = VisitBiz.Read(e => e.ContentId == contentId).Sum(e => e.Count); } catch (InvalidOperationException ex) { } var result = new ViewArticleModelContainer() { Article = content.GetContentForViewByVisitorPM(), Tags = content.Tags.Select(tag => tag.GetPresentationModel()).ToList(), AuthorProfile = new ProfileForViewByVisitorPM() { AboutMe = content.Author.ProfileKeyValues.SingleOrDefault(profileKeyValye => profileKeyValye.Type == ProfileKeyValueType.AboutMe)?.Value }, AuthorBusinessIntroduce = new BusinessIntroducePM() { Text = content.Author.ProfileKeyValues.SingleOrDefault(profileKeyValye => profileKeyValye.Type == ProfileKeyValueType.UserBusinessIntroduceText)?.Value }, Comments = CommentBiz.GetArticleComments(content.Id).MapTo <CommentInfoPM>().ToList(), UserRelatedArticles = ArticleBiz.ReadUserRelatedArticles(content.AuthorId, contentId, 10) .MapTo <ContentInfo4PM>() .ToList(), RelatedArticles = ArticleBiz.ReadRelatedArticles(content.AuthorId, contentId, 10) .MapTo <ContentInfo4PM>() .ToList(), TotalVisits = VisitBiz.Read(e => e.ContentId == contentId).Sum(e => e.Count) }; if (result.UserRelatedArticles.Count == 0 && result.RelatedArticles.Count == 0) { result.TopArticles = ArticleBiz.ReadTopArticles(10) .MapTo <ContentInfo4PM>() .ToList(); } return(result); }
public AdminDashboardModelContainer GetAdminDashboardStatistics() { var today = DateTime.Now.Date; return(new AdminDashboardModelContainer() { TodayVisitsCount = VisitBiz.GetTodaySiteTotalVisitsCount(), TotalArticlesCount = ArticleBiz.Read(c => c.State == ContentState.Published && c.Type == ContentType.Article).Count(), TotalBlogPostCount = ArticleBiz.Read(c => c.State == ContentState.Published && c.Type == ContentType.BlogPost).Count(), TotalUsersCount = UserBiz.Read().Count(), NewUsers = UserBiz.GetNewUsers(top: 3).MapTo <AdminDashboardNewUserPm>().ToList(), NewArticles = ArticleBiz.ReadLatestArticles(3).MapTo <AdminDashboardNewArticlePm>().ToList() }); }
public ProfileStatisticsAndSocialLinksPM ReadProfileStatisticsAndSocialLinks(int userId) { var userLinks = ProfileBiz.ReadUserProfileValues(userId, ProfileKeyValueType.WebSiteUrl, ProfileKeyValueType.FacebookUrl, ProfileKeyValueType.TwitterUrl, ProfileKeyValueType.LinkedInUrl); var articlesCount = ArticleBiz.ReadUserPublishedContents(userId, ContentType.Article).Count(); var blogsCount = ArticleBiz.ReadUserPublishedContents(userId, ContentType.Article).Count(); return(new ProfileStatisticsAndSocialLinksPM() { WebSiteUrl = userLinks.SingleOrDefault(kv => kv.Type == ProfileKeyValueType.WebSiteUrl)?.Value, FacebookUrl = userLinks.SingleOrDefault(kv => kv.Type == ProfileKeyValueType.FacebookUrl)?.Value, TwitterUrl = userLinks.SingleOrDefault(kv => kv.Type == ProfileKeyValueType.TwitterUrl)?.Value, LinkedInUrl = userLinks.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), }); }
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) }); }