Пример #1
0
        private CustomEntityDetails MapInitialData(CustomEntityVersion dbVersion, IExecutionContext executionContext)
        {
            var entity = new CustomEntityDetails()
            {
                CustomEntityId = dbVersion.CustomEntity.CustomEntityId,
                UrlSlug        = dbVersion.CustomEntity.UrlSlug,
                PublishStatus  = PublishStatusMapper.FromCode(dbVersion.CustomEntity.PublishStatusCode),
                PublishDate    = DbDateTimeMapper.AsUtc(dbVersion.CustomEntity.PublishDate),
            };

            entity.IsPublished = entity.PublishStatus == PublishStatus.Published && entity.PublishDate <= executionContext.ExecutionDate;
            entity.AuditData   = _auditDataMapper.MapCreateAuditData(dbVersion.CustomEntity);

            entity.LatestVersion = new CustomEntityVersionDetails()
            {
                CustomEntityVersionId = dbVersion.CustomEntityVersionId,
                Title          = dbVersion.Title,
                WorkFlowStatus = (WorkFlowStatus)dbVersion.WorkFlowStatusId
            };

            entity.LatestVersion.AuditData = _auditDataMapper.MapCreateAuditData(dbVersion);
            entity.HasDraft = entity.LatestVersion.WorkFlowStatus == WorkFlowStatus.Draft;

            return(entity);
        }
Пример #2
0
        private PageDetails Map(
            PageVersion dbPageVersion,
            ICollection <PageRegionDetails> regions,
            PageRoute pageRoute
            )
        {
            var page = new PageDetails();

            page.PageId    = dbPageVersion.PageId;
            page.PageRoute = pageRoute;
            page.AuditData = _auditDataMapper.MapCreateAuditData(dbPageVersion.Page);
            page.Tags      = dbPageVersion
                             .Page
                             .PageTags
                             .Select(t => t.Tag.TagText)
                             .OrderBy(t => t)
                             .ToList();

            page.LatestVersion = new PageVersionDetails()
            {
                MetaDescription = dbPageVersion.MetaDescription,
                PageVersionId   = dbPageVersion.PageVersionId,
                ShowInSiteMap   = !dbPageVersion.ExcludeFromSitemap,
                DisplayVersion  = dbPageVersion.DisplayVersion,
                Title           = dbPageVersion.Title,
                WorkFlowStatus  = (WorkFlowStatus)dbPageVersion.WorkFlowStatusId
            };

            page.LatestVersion.AuditData = _auditDataMapper.MapCreateAuditData(dbPageVersion);
            page.LatestVersion.OpenGraph = _openGraphDataMapper.Map(dbPageVersion);
            page.LatestVersion.Template  = _pageTemplateMapper.Map(dbPageVersion.PageTemplate);
            page.LatestVersion.Regions   = regions;

            return(page);
        }
Пример #3
0
        private CustomEntityDetails MapInitialData(CustomEntityVersion dbVersion, IExecutionContext executionContext)
        {
            var entity = new CustomEntityDetails()
            {
                CustomEntityId  = dbVersion.CustomEntity.CustomEntityId,
                UrlSlug         = dbVersion.CustomEntity.UrlSlug,
                PublishStatus   = PublishStatusMapper.FromCode(dbVersion.CustomEntity.PublishStatusCode),
                PublishDate     = dbVersion.CustomEntity.PublishDate,
                LastPublishDate = dbVersion.CustomEntity.LastPublishDate,
            };

            entity.AuditData = _auditDataMapper.MapCreateAuditData(dbVersion.CustomEntity);

            entity.LatestVersion = new CustomEntityVersionDetails()
            {
                CustomEntityVersionId = dbVersion.CustomEntityVersionId,
                Title          = dbVersion.Title,
                DisplayVersion = dbVersion.DisplayVersion,
                WorkFlowStatus = (WorkFlowStatus)dbVersion.WorkFlowStatusId
            };

            entity.LatestVersion.AuditData = _auditDataMapper.MapCreateAuditData(dbVersion);
            entity.HasDraftVersion         = entity.LatestVersion.WorkFlowStatus == WorkFlowStatus.Draft;

            return(entity);
        }
Пример #4
0
        /// <summary>
        /// Finishes off bulk mapping of tags and page routes in a PageSummary object
        /// </summary>
        public virtual async Task <List <PageSummary> > MapAsync(ICollection <Page> dbPages, IExecutionContext executionContext)
        {
            var ids = dbPages
                      .Select(p => p.PageId)
                      .ToArray();

            var routes = await _queryExecutor.ExecuteAsync(new GetPageRoutesByIdRangeQuery(ids), executionContext);

            var pageTags = await _dbContext
                           .PageTags
                           .AsNoTracking()
                           .Where(p => ids.Contains(p.PageId))
                           .Select(t => new
            {
                PageId = t.PageId,
                Tag    = t.Tag.TagText
            })
                           .ToListAsync();

            var pages = new List <PageSummary>(ids.Length);

            foreach (var dbPage in dbPages)
            {
                var pageRoute = routes.GetOrDefault(dbPage.PageId);
                EntityNotFoundException.ThrowIfNull(pageRoute, dbPage.PageId);

                var page = new PageSummary()
                {
                    FullUrlPath         = pageRoute.FullUrlPath,
                    HasDraftVersion     = pageRoute.HasDraftVersion,
                    HasPublishedVersion = pageRoute.HasPublishedVersion,
                    PublishDate         = pageRoute.PublishDate,
                    LastPublishDate     = pageRoute.LastPublishDate,
                    PublishStatus       = pageRoute.PublishStatus,
                    Locale   = pageRoute.Locale,
                    PageId   = pageRoute.PageId,
                    PageType = pageRoute.PageType,
                    Title    = pageRoute.Title,
                    UrlPath  = pageRoute.UrlPath
                };

                page.AuditData = _auditDataMapper.MapCreateAuditData(dbPage);

                if (!string.IsNullOrWhiteSpace(dbPage.CustomEntityDefinitionCode))
                {
                    var customEntityDefinition = _customEntityDefinitionRepository.GetByCode(dbPage.CustomEntityDefinitionCode);
                    // Graciously fall-back if the definition has been removed, since this is typically just for display purposes
                    page.CustomEntityName = customEntityDefinition?.Name ?? "Definition Missing";
                }

                page.Tags = pageTags
                            .Where(t => t.PageId == page.PageId)
                            .Select(t => t.Tag)
                            .ToArray();

                pages.Add(page);
            }

            return(pages);
        }
Пример #5
0
        /// <summary>
        /// Finishes off bulk mapping of tags and page routes in a PageSummary object
        /// </summary>
        public async Task <List <PageSummary> > MapAsync(ICollection <Page> dbPages, IExecutionContext executionContext)
        {
            var routes = await _queryExecutor.ExecuteAsync(new GetAllPageRoutesQuery(), executionContext);

            var ids = dbPages
                      .Select(p => p.PageId)
                      .ToArray();

            var pageTags = await _dbContext
                           .PageTags
                           .AsNoTracking()
                           .Where(p => ids.Contains(p.PageId))
                           .Select(t => new
            {
                PageId = t.PageId,
                Tag    = t.Tag.TagText
            })
                           .ToListAsync();

            var pages = new List <PageSummary>(ids.Length);

            foreach (var dbPage in dbPages)
            {
                var pageRoute = routes.SingleOrDefault(r => r.PageId == dbPage.PageId);
                EntityNotFoundException.ThrowIfNull(pageRoute, dbPage.PageId);

                var page = new PageSummary()
                {
                    FullPath            = pageRoute.FullPath,
                    HasDraftVersion     = pageRoute.HasDraftVersion,
                    HasPublishedVersion = pageRoute.HasPublishedVersion,
                    PublishDate         = pageRoute.PublishDate,
                    PublishStatus       = pageRoute.PublishStatus,
                    Locale   = pageRoute.Locale,
                    PageId   = pageRoute.PageId,
                    PageType = pageRoute.PageType,
                    Title    = pageRoute.Title,
                    UrlPath  = pageRoute.UrlPath
                };

                page.IsPublished = page.PublishStatus == PublishStatus.Published && page.PublishDate <= executionContext.ExecutionDate;
                page.AuditData   = _auditDataMapper.MapCreateAuditData(dbPage);

                if (!string.IsNullOrWhiteSpace(dbPage.CustomEntityDefinitionCode))
                {
                    var customEntityDefinition = _customEntityDefinitionRepository.GetByCode(dbPage.CustomEntityDefinitionCode);
                    page.CustomEntityName = customEntityDefinition.Name;
                }

                page.Tags = pageTags
                            .Where(t => t.PageId == page.PageId)
                            .Select(t => t.Tag)
                            .ToArray();

                pages.Add(page);
            }

            return(pages);
        }
Пример #6
0
        /// <summary>
        /// Maps an EF CustomEntityVersion record from the db into a CustomEntityVersionSummary
        /// object. If the db record is null then null is returned.
        /// </summary>
        /// <param name="dbVersion">CustomEntityVersion record from the database.</param>
        private CustomEntityVersionSummary MapVersion(CustomEntityVersion dbVersion)
        {
            var versionSummary = new CustomEntityVersionSummary()
            {
                CustomEntityVersionId = dbVersion.CustomEntityVersionId,
                Title          = dbVersion.Title,
                WorkFlowStatus = (WorkFlowStatus)dbVersion.WorkFlowStatusId,
                AuditData      = _auditDataMapper.MapCreateAuditData(dbVersion)
            };

            return(versionSummary);
        }
Пример #7
0
        private PageVersionSummary MapVersion(PageVersion dbPageVersion)
        {
            var result = new PageVersionSummary()
            {
                PageVersionId  = dbPageVersion.PageVersionId,
                ShowInSiteMap  = !dbPageVersion.ExcludeFromSitemap,
                Title          = dbPageVersion.Title,
                WorkFlowStatus = (WorkFlowStatus)dbPageVersion.WorkFlowStatusId
            };

            result.Template  = _pageTemplateMapper.Map(dbPageVersion.PageTemplate);
            result.AuditData = _auditDataMapper.MapCreateAuditData(dbPageVersion);

            return(result);
        }
        private PageDirectoryNode MapInitial(PageDirectoryTreeNodeQueryModel queryModel)
        {
            var dbDirectory = queryModel.PageDirectory;
            var result      = new PageDirectoryNode()
            {
                Name                  = dbDirectory.Name,
                NumPages              = queryModel.NumPages,
                PageDirectoryId       = dbDirectory.PageDirectoryId,
                ParentPageDirectoryId = dbDirectory.ParentPageDirectoryId,
                UrlPath               = dbDirectory.UrlPath
            };

            result.AuditData = _auditDataMapper.MapCreateAuditData(dbDirectory);

            return(result);
        }
Пример #9
0
        /// <summary>
        /// Maps an EF PageGroup record from the db into an PageGroupSummary
        /// object. If the db record is null then null is returned.
        /// </summary>
        /// <param name="dbPageGroup">Query model with data from the database.</param>
        public PageGroupSummary Map(PageGroupSummaryQueryModel queryModel)
        {
            var dbPageGroup = queryModel?.PageGroup;

            if (dbPageGroup == null)
            {
                return(null);
            }

            var pageGroup = new PageGroupSummary()
            {
                Name          = dbPageGroup.GroupName,
                PageGroupId   = dbPageGroup.PageGroupId,
                ParentGroupId = dbPageGroup.ParentGroupId,
                NumPages      = queryModel.NumPages,
                AuditData     = _auditDataMapper.MapCreateAuditData(dbPageGroup)
            };

            return(pageGroup);
        }