private async Task ValidateIsUniqueAsync(
            UpdateCustomEntityUrlCommand command,
            CustomEntityDefinitionSummary definition,
            IExecutionContext executionContext
            )
        {
            if (!definition.ForceUrlSlugUniqueness)
            {
                return;
            }

            var query = new IsCustomEntityUrlSlugUniqueQuery();

            query.CustomEntityDefinitionCode = definition.CustomEntityDefinitionCode;
            query.CustomEntityId             = command.CustomEntityId;
            query.LocaleId = command.LocaleId;
            query.UrlSlug  = command.UrlSlug;

            var isUnique = await _queryExecutor.ExecuteAsync(query, executionContext);

            if (!isUnique)
            {
                var message = string.Format("A {0} already exists with the {2} '{1}'",
                                            definition.Name,
                                            command.UrlSlug,
                                            definition.Terms.GetOrDefault(CustomizableCustomEntityTermKeys.UrlSlug, "url slug").ToLower());
                throw new UniqueConstraintViolationException(message, "UrlSlug", command.UrlSlug);
            }
        }
        private IsCustomEntityUrlSlugUniqueQuery GetUniquenessQuery(AddCustomEntityCommand command, CustomEntityDefinitionSummary definition)
        {
            var query = new IsCustomEntityUrlSlugUniqueQuery();

            query.CustomEntityDefinitionCode = definition.CustomEntityDefinitionCode;
            query.LocaleId = command.LocaleId;
            query.UrlSlug  = command.UrlSlug;

            return(query);
        }
        private IsCustomEntityUrlSlugUniqueQuery GetUniquenessQuery(UpdateCustomEntityDraftVersionCommand command, ICustomEntityDefinition definition, CustomEntityVersion dbVersion)
        {
            var query = new IsCustomEntityUrlSlugUniqueQuery();

            query.CustomEntityDefinitionCode = definition.CustomEntityDefinitionCode;
            query.LocaleId       = dbVersion.CustomEntity.LocaleId;
            query.UrlSlug        = SlugFormatter.ToSlug(command.Title);
            query.CustomEntityId = command.CustomEntityId;

            return(query);
        }
Beispiel #4
0
 public IDomainRepositoryQueryContext <bool> IsUrlSlugUnique(IsCustomEntityUrlSlugUniqueQuery query)
 {
     return(DomainRepositoryQueryContextFactory.Create(query, ExtendableContentRepository));
 }