/// <summary>
        /// Gets the list of page content entities.
        /// </summary>
        /// <param name="request">The request.</param>
        /// <returns>
        /// Page content entities list
        /// </returns>
        /// <exception cref="CmsApiException"></exception>
        public IList<PageContent> GetPageContents(GetPageContentsRequest request)
        {
            try
            {
                var query = Repository
                    .AsQueryable<PageContent>()
                    .Where(p => p.Page.Id == request.PageId && publicStatuses.Contains(p.Content.Status))
                    .ApplyFilters(request);

                if (!request.IncludeUnpublished)
                {
                    query = query.Where(c => c.Content.Status == ContentStatus.Published);
                }

                query = query
                    .Fetch(c => c.Content)
                    .Fetch(c => c.Region)
                    .FetchMany(c => c.Options);

                if (!request.IncludeNotActive)
                {
                    return RemoveInactiveContents(query.ToList());
                }
                return query.ToList();
            }
            catch (Exception inner)
            {
                var message = string.Format("Failed to get page contents by page id {0}.", request.PageId);
                Logger.Error(message, inner);

                throw new CmsApiException(message, inner);
            }
        }
        /// <summary>
        /// Ups the specified configuration.
        /// </summary>
        /// <param name="configuration">The configuration.</param>
        public override void Up(ICmsConfiguration configuration)
        {
            using (var blogsApi = CmsContext.CreateApiContextOf<BlogsApiContext>())
            {
                var blogs = blogsApi.GetBlogPosts(new GetBlogPostsRequest(includeUnpublished: true, includeNotActive: true)).Items;
                if (!blogs.Any())
                {
                    return;
                }

                var updateRequests = new List<UpdateBlogPostRequest>();

                using (var pagesApi = CmsContext.CreateApiContextOf<PagesApiContext>())
                {
                    foreach (var blog in blogs)
                    {
                        var requestToGet = new GetPageContentsRequest(blog.Id, e => e.Content is BlogPostContent, includeUnpublished: true, includeNotActive: true);
                        var pageContent = pagesApi.GetPageContents(requestToGet).FirstOrDefault();
                        if (pageContent == null)
                        {
                            continue;
                        }

                        var content = pageContent.Content as HtmlContent;
                        if (content == null)
                        {
                            continue;
                        }

                        updateRequests.Add(
                            new UpdateBlogPostRequest
                                {
                                    Id = blog.Id,
                                    Version = blog.Version,
                                    Title = blog.Title,
                                    IntroText = blog.Description,
                                    LiveFromDate = content.ActivationDate,
                                    LiveToDate = content.ExpirationDate,
                                    ImageId = blog.Image != null ? (Guid?)blog.Image.Id : null,
                                    AuthorId = blog.Author != null ? (Guid?)blog.Author.Id : null,
                                    CategoryId = blog.Category != null ? (Guid?)blog.Category.Id : null,
                                    Tags = blog.PageTags.Select(t => t.Tag.Name).ToList()
                                });
                    }
                }

                using (var transactionScope = new TransactionScope())
                {
                    foreach (var request in updateRequests)
                    {
                        blogsApi.UpdateBlogPost(request);
                    }

                    transactionScope.Complete();
                }
            }
        }
Example #3
0
        /// <summary>
        /// Ups the specified configuration.
        /// </summary>
        /// <param name="configuration">The configuration.</param>
        public override void Up(ICmsConfiguration configuration)
        {
            using (var blogsApi = CmsContext.CreateApiContextOf <BlogsApiContext>())
            {
                var blogs = blogsApi.GetBlogPosts(new GetBlogPostsRequest(includePrivate: true, includeUnpublished: true, includeNotActive: true)).Items;
                if (!blogs.Any())
                {
                    return;
                }

                var updateRequests = new List <UpdateBlogPostRequest>();

                using (var pagesApi = CmsContext.CreateApiContextOf <PagesApiContext>())
                {
                    foreach (var blog in blogs)
                    {
                        var requestToGet = new GetPageContentsRequest(blog.Id, e => e.Content is BlogPostContent, includeUnpublished: true, includeNotActive: true);
                        var pageContent  = pagesApi.GetPageContents(requestToGet).FirstOrDefault();
                        if (pageContent == null)
                        {
                            continue;
                        }

                        var content = pageContent.Content as HtmlContent;
                        if (content == null)
                        {
                            continue;
                        }

                        updateRequests.Add(new UpdateBlogPostRequest {
                            Id = blog.Id, ActivationDate = content.ActivationDate, ExpirationDate = content.ExpirationDate,
                        });
                    }
                }

                using (var transactionScope = new TransactionScope())
                {
                    foreach (var request in updateRequests)
                    {
                        blogsApi.UpdateBlogPost(request);
                    }

                    transactionScope.Complete();
                }
            }
        }
        public GetPageContentsResponse Get(GetPageContentsRequest request)
        {
            request.Data.SetDefaultOrder("Order");

            var query = repository
                 .AsQueryable<Module.Root.Models.PageContent>(pageContent => pageContent.Page.Id == request.PageId && !pageContent.Page.IsDeleted && !pageContent.Content.IsDeleted);

            if (request.Data.RegionId.HasValue)
            {
                query = query.Where(pageContent => pageContent.Region != null && !pageContent.Region.IsDeleted && pageContent.Region.Id == request.Data.RegionId);
            }
            else if (!string.IsNullOrWhiteSpace(request.Data.RegionIdentifier))
            {
                query = query.Where(pageContent => pageContent.Region != null && !pageContent.Region.IsDeleted && pageContent.Region.RegionIdentifier == request.Data.RegionIdentifier);
            }

            if (!request.Data.IncludeUnpublished)
            {
                query = query.Where(pageContent => pageContent.Content.Status == ContentStatus.Published);
            }

            var dataListResult = query.Select(pageContent => new PageContentModel
                     {
                         Id = pageContent.Id,
                         Version = pageContent.Version,
                         CreatedBy = pageContent.CreatedByUser,
                         CreatedOn = pageContent.CreatedOn,
                         LastModifiedBy = pageContent.ModifiedByUser,
                         LastModifiedOn = pageContent.ModifiedOn,

                         ContentId = pageContent.Content.Id,
                         ParentPageContentId = pageContent.Parent != null ? pageContent.Parent.Id : (System.Guid?)null,
                         OriginalContentType = pageContent.Content.GetType(),
                         Name = pageContent.Content.Name,
                         RegionId = pageContent.Region.Id,
                         RegionIdentifier = pageContent.Region.RegionIdentifier,
                         Order = pageContent.Order,
                         IsPublished = pageContent.Content.Status == ContentStatus.Published
                     }).ToDataListResponse(request);

            // Set content types
            dataListResult.Items.ToList().ForEach(item => item.ContentType = item.OriginalContentType.ToContentTypeString());

            return new GetPageContentsResponse { Data = dataListResult };
        }
        /// <summary>
        /// Ups the specified configuration.
        /// </summary>
        /// <param name="configuration">The configuration.</param>
        public override void Up(ICmsConfiguration configuration)
        {
            using (var blogsApi = CmsContext.CreateApiContextOf<BlogsApiContext>())
            {
                var blogs = blogsApi.GetBlogPosts(new GetBlogPostsRequest(includePrivate: true, includeUnpublished: true, includeNotActive: true)).Items;
                if (!blogs.Any())
                {
                    return;
                }

                var updateRequests = new List<UpdateBlogPostRequest>();

                using (var pagesApi = CmsContext.CreateApiContextOf<PagesApiContext>())
                {
                    foreach (var blog in blogs)
                    {
                        var requestToGet = new GetPageContentsRequest(blog.Id, e => e.Content is BlogPostContent, includeUnpublished: true, includeNotActive: true);
                        var pageContent = pagesApi.GetPageContents(requestToGet).FirstOrDefault();
                        if (pageContent == null)
                        {
                            continue;
                        }

                        var content = pageContent.Content as HtmlContent;
                        if (content == null)
                        {
                            continue;
                        }

                        updateRequests.Add(new UpdateBlogPostRequest { Id = blog.Id, ActivationDate = content.ActivationDate, ExpirationDate = content.ExpirationDate, });
                    }
                }

                using (var transactionScope = new TransactionScope())
                {
                    foreach (var request in updateRequests)
                    {
                        blogsApi.UpdateBlogPost(request);
                    }

                    transactionScope.Complete();
                }
            }
        }