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 PublicationService()
 {
     UnitOfWork     = new CoreUnitOfWork();
     BlogBiz        = new BlogBiz(UnitOfWork);
     PublicationBiz = new PublicationBiz(UnitOfWork);
     ContentBiz     = new ContentBiz(UnitOfWork);
 }
 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;
 }
 private BlogHomePageModelContainer ReadBlogHomePageData(Blog blog)
 {
     return(new BlogHomePageModelContainer()
     {
         BlogInfo = blog.GetBlogInfo(),
         ArchiveItems = PublicationBiz.ReadPublicationArchivedItemsCalendar(blog.Id, ContentType.BlogPost)
                        .Select(item => new ContentArchiveItemPM(item.Item1, item.Item2)),
         Links = BlogBiz.ReadBlogLinks(blog.Id)
                 .MapTo <BlogLinkPM>()
                 .ToList(),
         LatestPosts = BlogBiz.ReadUserPublishedPostsForViewByVisitor(blog.CreatorId)
                       .Take(100)
                       .MapTo <ContentInfoWithTextPM>()
                       .ToList()
     });
 }
        public object ReadPublicationHomePageData(string publicationName)
        {
            var publication = PublicationBiz.Include(p => p.Creator).SingleOrDefault(p => p.Name == publicationName);

            if (publication == null)
            {
                throw new PageNotFoundException();
            }
            if (publication is Blog)
            {
                return(ReadBlogHomePageData((Blog)publication));
            }
            else
            {
                return(ReadChannelHomePageData((Channel)publication));
            }
        }
        public ViewBlogArchiveModelContainer ReadArchiveForViewByVisitor(string publicationName, int?year, int?month)
        {
            var blog = BlogBiz.Read(b => b.Name == publicationName)
                       .Include(b => b.Links)
                       .Single();
            var postTitles = year.HasValue && month.HasValue ?
                             BlogBiz.ReadBlogPublishedPosts(blog.Id, year.Value, month.Value) :
                             BlogBiz.ReadBlogPublishedPosts(blog.Id);

            return(new ViewBlogArchiveModelContainer()
            {
                Year = year,
                Month = month,
                BlogInfo = blog.GetBlogInfo(),
                Links = blog.Links.Select(link => link.GetLinkPM()).ToList(),
                PostTitles = postTitles.MapTo <ContentInfo2PM>().ToList(),
                ArchiveItems = PublicationBiz.ReadPublicationArchivedItemsCalendar(blog.Id, ContentType.BlogPost)
                               .Select(item => new ContentArchiveItemPM(item.Item1, item.Item2)),
            });
        }