コード例 #1
0
        public virtual async Task AddTagToEntityAsync(EntityTagCreateDto input)
        {
            var definition = await TagDefinitionStore.GetTagEntityTypeDefinitionAsync(input.EntityType);

            await CheckPolicyAsync(definition.CreatePolicy);

            var tag = await TagManager.GetOrAddAsync(input.EntityType, input.TagName);

            await EntityTagManager.AddTagToEntityAsync(
                tag.Id,
                input.EntityType,
                input.EntityId,
                CurrentTenant?.Id);
        }
コード例 #2
0
ファイル: EntityTagManager.cs プロジェクト: zjc-china/abp
        public virtual async Task <EntityTag> AddTagToEntityAsync(
            [NotNull] Guid tagId,
            [NotNull] string entityType,
            [NotNull] string entityId,
            [CanBeNull] Guid?tenantId           = null,
            CancellationToken cancellationToken = default)
        {
            if (!await TagDefinitionStore.IsDefinedAsync(entityType))
            {
                throw new EntityNotTaggableException(entityType);
            }

            var entityTag = new EntityTag(tagId, entityId, tenantId);

            return(await EntityTagRepository.InsertAsync(entityTag, cancellationToken : cancellationToken));
        }
コード例 #3
0
        public virtual async Task SetEntityTagsAsync(EntityTagSetDto input)
        {
            var definition = await TagDefinitionStore.GetTagEntityTypeDefinitionsAsync(input.EntityType);

            await CheckPolicyAsync(definition.UpdatePolicy);

            var existingTags =
                await TagRepository.GetAllRelatedTagsAsync(input.EntityType, input.EntityId, CurrentTenant?.Id);

            var deletedTags = existingTags.Where(x => !input.Tags.Contains(x.Name)).ToList();
            var addedTags   = input.Tags.Where(x => !existingTags.Any(a => a.Name == x));

            await EntityTagRepository.DeleteManyAsync(deletedTags.Select(s => s.Id).ToArray());

            foreach (var addedTag in addedTags)
            {
                var tag = await TagManager.GetOrAddAsync(input.EntityType, addedTag, CurrentTenant?.Id);

                await EntityTagManager.AddTagToEntityAsync(tag.Id, input.EntityType, input.EntityId, CurrentTenant?.Id);
            }
        }