private PageRoutingInfo ToRoutingInfo(PageRoute pageRoute, CustomEntityRoute customEntityRoute = null, ICustomEntityRoutingRule rule = null)
 {
     return(new PageRoutingInfo()
     {
         PageRoute = pageRoute,
         CustomEntityRoute = customEntityRoute,
         CustomEntityRouteRule = rule
     });
 }
示例#2
0
        public CustomEntityRoute Map(
            CustomEntity dbCustomEntity,
            ActiveLocale locale
            )
        {
            if (dbCustomEntity == null)
            {
                throw new ArgumentNullException(nameof(dbCustomEntity));
            }
            if (dbCustomEntity.CustomEntityVersions == null)
            {
                throw new ArgumentNullException(nameof(dbCustomEntity.CustomEntityVersions));
            }

            var route = new CustomEntityRoute()
            {
                CustomEntityDefinitionCode = dbCustomEntity.CustomEntityDefinitionCode,
                CustomEntityId             = dbCustomEntity.CustomEntityId,
                UrlSlug         = dbCustomEntity.UrlSlug,
                Locale          = locale,
                PublishDate     = dbCustomEntity.PublishDate,
                LastPublishDate = dbCustomEntity.LastPublishDate,
                PublishStatus   = dbCustomEntity.PublishStatusCode == PublishStatusCode.Published ? PublishStatus.Published : PublishStatus.Unpublished,
                Ordering        = dbCustomEntity.Ordering
            };

            bool hasLatestPublishVersion = false;

            route.Versions = new List <CustomEntityVersionRoute>();

            foreach (var dbVersion in dbCustomEntity
                     .CustomEntityVersions
                     .OrderByLatest())
            {
                var version = new CustomEntityVersionRoute()
                {
                    CreateDate     = dbVersion.CreateDate,
                    Title          = dbVersion.Title,
                    VersionId      = dbVersion.CustomEntityVersionId,
                    WorkFlowStatus = (WorkFlowStatus)dbVersion.WorkFlowStatusId
                };

                if (!hasLatestPublishVersion && version.WorkFlowStatus == WorkFlowStatus.Published)
                {
                    version.IsLatestPublishedVersion = true;
                    hasLatestPublishVersion          = true;
                }
                route.Versions.Add(version);
            }

            route.HasDraftVersion     = route.Versions.Any(v => v.WorkFlowStatus == WorkFlowStatus.Draft);
            route.HasPublishedVersion = route.Versions.Any(v => v.WorkFlowStatus == WorkFlowStatus.Published);

            return(route);
        }
示例#3
0
        public void MakeUrl(string urlSlug, string expectedUrl)
        {
            var customEntityRoute = new CustomEntityRoute()
            {
                UrlSlug = urlSlug
            };

            var url = _rule.MakeUrl(_pageRoute, customEntityRoute);

            url.Should().Be(expectedUrl);
        }
示例#4
0
        public void MakeUrl(int customEntityId, string expectedUrl)
        {
            var customEntityRoute = new CustomEntityRoute()
            {
                CustomEntityId = customEntityId
            };

            var url = _rule.MakeUrl(_pageRoute, customEntityRoute);

            url.Should().Be(expectedUrl);
        }
示例#5
0
        private SiteMapResource MapCustomEntityResource(PageRoute pageRoute, CustomEntityRoute customEntityRoute, IEnumerable <ICustomEntityRoutingRule> allRules)
        {
            var version = customEntityRoute.Versions.GetVersionRouting(PublishStatusQuery.Published);

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

            var rule = allRules.FirstOrDefault(r => r.RouteFormat == pageRoute.UrlPath);

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

            var resource = new SiteMapResource();

            resource.Url = rule.MakeUrl(pageRoute, customEntityRoute);
            resource.LastModifiedDate = customEntityRoute.PublishDate;
            resource.Priority         = GetPriority(pageRoute);

            return(resource);
        }