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