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