diff --git a/modules/cms-kit/src/Volo.CmsKit.Admin.Application/Volo/CmsKit/Admin/CmsKitAdminApplicationAutoMapperProfile.cs b/modules/cms-kit/src/Volo.CmsKit.Admin.Application/Volo/CmsKit/Admin/CmsKitAdminApplicationAutoMapperProfile.cs index a2615292f0..125c8f293c 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Admin.Application/Volo/CmsKit/Admin/CmsKitAdminApplicationAutoMapperProfile.cs +++ b/modules/cms-kit/src/Volo.CmsKit.Admin.Application/Volo/CmsKit/Admin/CmsKitAdminApplicationAutoMapperProfile.cs @@ -34,6 +34,8 @@ namespace Volo.CmsKit.Admin CreateMap(MemberList.Destination); + CreateMap(); + CreateMap(); } } diff --git a/modules/cms-kit/src/Volo.CmsKit.Admin.Application/Volo/CmsKit/Admin/Tags/TagAdminAppService.cs b/modules/cms-kit/src/Volo.CmsKit.Admin.Application/Volo/CmsKit/Admin/Tags/TagAdminAppService.cs index 5d4a9b03e0..da30721267 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Admin.Application/Volo/CmsKit/Admin/Tags/TagAdminAppService.cs +++ b/modules/cms-kit/src/Volo.CmsKit.Admin.Application/Volo/CmsKit/Admin/Tags/TagAdminAppService.cs @@ -4,6 +4,7 @@ using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; +using Volo.Abp.Application.Dtos; using Volo.Abp.Application.Services; using Volo.Abp.Domain.Repositories; using Volo.CmsKit.Permissions; @@ -12,39 +13,27 @@ using Volo.CmsKit.Tags; namespace Volo.CmsKit.Admin.Tags { [Authorize(CmsKitAdminPermissions.Tags.Default)] - public class TagAdminAppService : - CrudAppService< - Tag, - TagDto, - Guid, - TagGetListInput, - TagCreateDto, - TagUpdateDto>, - ITagAdminAppService + public class TagAdminAppService : CmsKitAppServiceBase, ITagAdminAppService { + protected ITagRepository Repository { get; } protected TagManager TagManager { get; } protected ITagDefinitionStore TagDefinitionStore { get; } protected IStringLocalizerFactory StringLocalizerFactory { get; } public TagAdminAppService( - IRepository repository, + ITagRepository repository, TagManager tagManager, ITagDefinitionStore tagDefinitionStore, - IStringLocalizerFactory stringLocalizerFactory) : base(repository) + IStringLocalizerFactory stringLocalizerFactory) { + Repository = repository; TagManager = tagManager; TagDefinitionStore = tagDefinitionStore; StringLocalizerFactory = stringLocalizerFactory; - - GetListPolicyName = CmsKitAdminPermissions.Tags.Default; - GetPolicyName = CmsKitAdminPermissions.Tags.Default; - CreatePolicyName = CmsKitAdminPermissions.Tags.Create; - UpdatePolicyName = CmsKitAdminPermissions.Tags.Update; - DeletePolicyName = CmsKitAdminPermissions.Tags.Delete; } [Authorize(CmsKitAdminPermissions.Tags.Create)] - public override async Task CreateAsync(TagCreateDto input) + public async Task CreateAsync(TagCreateDto input) { var tag = await TagManager.CreateAsync( GuidGenerator.Create(), @@ -53,11 +42,11 @@ namespace Volo.CmsKit.Admin.Tags await Repository.InsertAsync(tag); - return await MapToGetOutputDtoAsync(tag); + return ObjectMapper.Map(tag); } [Authorize(CmsKitAdminPermissions.Tags.Update)] - public override async Task UpdateAsync(Guid id, TagUpdateDto input) + public async Task UpdateAsync(Guid id, TagUpdateDto input) { var tag = await TagManager.UpdateAsync( id, @@ -65,31 +54,48 @@ namespace Volo.CmsKit.Admin.Tags await Repository.UpdateAsync(tag); - return await MapToGetOutputDtoAsync(tag); - } - - protected override async Task> CreateFilteredQueryAsync(TagGetListInput input) - { - return (await base.CreateFilteredQueryAsync(input)) - .WhereIf( - !input.Filter.IsNullOrEmpty(), - x => - x.Name.ToLower().Contains(input.Filter) || - x.EntityType.ToLower().Contains(input.Filter)); + return ObjectMapper.Map(tag); } + [Authorize(CmsKitAdminPermissions.Tags.Default)] public virtual async Task> GetTagDefinitionsAsync() { var definitions = await TagDefinitionStore.GetTagEntityTypeDefinitionListAsync(); return definitions - .Select(s => + .Select(s => new TagDefinitionDto { - EntityType = s.EntityType, + EntityType = s.EntityType, DisplayName = s.DisplayName?.Localize(StringLocalizerFactory) ?? s.EntityType }) .ToList(); } + + [Authorize(CmsKitAdminPermissions.Tags.Default)] + public async Task GetAsync(Guid id) + { + var tag = await Repository.GetAsync(id); + + return ObjectMapper.Map(tag); + } + + [Authorize(CmsKitAdminPermissions.Tags.Default)] + public async Task> GetListAsync(TagGetListInput input) + { + var tags = await Repository.GetListAsync(input.Filter); + var count = await Repository.GetCountAsync(input.Filter); + + return new PagedResultDto( + count, + ObjectMapper.Map, List>(tags) + ); + } + + [Authorize(CmsKitAdminPermissions.Tags.Delete)] + public async Task DeleteAsync(Guid id) + { + await Repository.DeleteAsync(id); + } } } diff --git a/modules/cms-kit/src/Volo.CmsKit.Common.Application.Contracts/Volo/CmsKit/Tags/TagDto.cs b/modules/cms-kit/src/Volo.CmsKit.Common.Application.Contracts/Volo/CmsKit/Tags/TagDto.cs index ab9114919c..b9bffe880b 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Common.Application.Contracts/Volo/CmsKit/Tags/TagDto.cs +++ b/modules/cms-kit/src/Volo.CmsKit.Common.Application.Contracts/Volo/CmsKit/Tags/TagDto.cs @@ -8,6 +8,6 @@ namespace Volo.CmsKit.Tags { public string EntityType { get; set; } - public string Name { get; protected set; } + public string Name { get; set; } } } diff --git a/modules/cms-kit/src/Volo.CmsKit.Domain/Volo/CmsKit/Tags/ITagRepository.cs b/modules/cms-kit/src/Volo.CmsKit.Domain/Volo/CmsKit/Tags/ITagRepository.cs index b45bd30db7..a399a662db 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Domain/Volo/CmsKit/Tags/ITagRepository.cs +++ b/modules/cms-kit/src/Volo.CmsKit.Domain/Volo/CmsKit/Tags/ITagRepository.cs @@ -24,6 +24,10 @@ namespace Volo.CmsKit.Tags [NotNull] string name, CancellationToken cancellationToken = default); + Task> GetListAsync(string filter); + + Task GetCountAsync(string filter); + Task> GetAllRelatedTagsAsync( [NotNull] string entityType, [NotNull] string entityId, diff --git a/modules/cms-kit/src/Volo.CmsKit.EntityFrameworkCore/Volo/CmsKit/Tags/EfCoreTagRepository.cs b/modules/cms-kit/src/Volo.CmsKit.EntityFrameworkCore/Volo/CmsKit/Tags/EfCoreTagRepository.cs index bc33e4f660..f22da7bce7 100644 --- a/modules/cms-kit/src/Volo.CmsKit.EntityFrameworkCore/Volo/CmsKit/Tags/EfCoreTagRepository.cs +++ b/modules/cms-kit/src/Volo.CmsKit.EntityFrameworkCore/Volo/CmsKit/Tags/EfCoreTagRepository.cs @@ -25,7 +25,7 @@ namespace Volo.CmsKit.Tags { Check.NotNullOrEmpty(entityType, nameof(entityType)); Check.NotNullOrEmpty(name, nameof(name)); - + return await (await GetDbSetAsync()).AnyAsync(x => x.EntityType == entityType && x.Name == name, @@ -39,7 +39,7 @@ namespace Volo.CmsKit.Tags { Check.NotNullOrEmpty(entityType, nameof(entityType)); Check.NotNullOrEmpty(name, nameof(name)); - + return GetAsync(x => x.EntityType == entityType && x.Name == name, @@ -53,7 +53,7 @@ namespace Volo.CmsKit.Tags { Check.NotNullOrEmpty(entityType, nameof(entityType)); Check.NotNullOrEmpty(name, nameof(name)); - + return FindAsync(x => x.EntityType == entityType && x.Name == name, @@ -67,7 +67,7 @@ namespace Volo.CmsKit.Tags { Check.NotNullOrEmpty(entityType, nameof(entityType)); Check.NotNullOrEmpty(entityId, nameof(entityId)); - + var entityTagIds = await (await GetDbContextAsync()).Set() .Where(q => q.EntityId == entityId) .Select(q => q.TagId) @@ -79,5 +79,25 @@ namespace Volo.CmsKit.Tags return await query.ToListAsync(cancellationToken: GetCancellationToken(cancellationToken)); } + + public async Task> GetListAsync(string filter) + { + return await (await GetQueryableByFilterAsync(filter)).ToListAsync(); + } + + public async Task GetCountAsync(string filter) + { + return await (await GetQueryableByFilterAsync(filter)).CountAsync(); + } + + private async Task> GetQueryableByFilterAsync(string filter) + { + return (await GetQueryableAsync()) + .WhereIf( + !filter.IsNullOrEmpty(), + x => + x.Name.ToLower().Contains(filter) || + x.EntityType.ToLower().Contains(filter)); + } } } diff --git a/modules/cms-kit/src/Volo.CmsKit.MongoDB/Volo/CmsKit/MongoDB/Tags/MongoTagRepository.cs b/modules/cms-kit/src/Volo.CmsKit.MongoDB/Volo/CmsKit/MongoDB/Tags/MongoTagRepository.cs index bb35a19075..7452709bfd 100644 --- a/modules/cms-kit/src/Volo.CmsKit.MongoDB/Volo/CmsKit/MongoDB/Tags/MongoTagRepository.cs +++ b/modules/cms-kit/src/Volo.CmsKit.MongoDB/Volo/CmsKit/MongoDB/Tags/MongoTagRepository.cs @@ -26,7 +26,7 @@ namespace Volo.CmsKit.MongoDB.Tags { Check.NotNullOrEmpty(entityType, nameof(entityType)); Check.NotNullOrEmpty(name, nameof(name)); - + return await (await GetMongoQueryableAsync(cancellationToken)) .AnyAsync(x => x.EntityType == entityType && @@ -52,7 +52,7 @@ namespace Volo.CmsKit.MongoDB.Tags { Check.NotNullOrEmpty(entityType, nameof(entityType)); Check.NotNullOrEmpty(name, nameof(name)); - + return FindAsync(x => x.EntityType == entityType && x.Name == name, @@ -66,7 +66,7 @@ namespace Volo.CmsKit.MongoDB.Tags { Check.NotNullOrEmpty(entityType, nameof(entityType)); Check.NotNullOrEmpty(entityId, nameof(entityId)); - + var entityTagIds = await (await GetDbContextAsync(cancellationToken)).EntityTags.AsQueryable() .Where(q => q.EntityId == entityId) .Select(q => q.TagId) @@ -80,5 +80,30 @@ namespace Volo.CmsKit.MongoDB.Tags var result = await query.ToListAsync(cancellationToken: GetCancellationToken(cancellationToken)); return result; } + + + public async Task> GetListAsync(string filter) + { + return await (await GetQueryableByFilterAsync(filter)).ToListAsync(); + } + + public async Task GetCountAsync(string filter) + { + return await (await GetQueryableByFilterAsync(filter)).CountAsync(); + } + + private async Task> GetQueryableByFilterAsync(string filter) + { + var mongoQueryable = await GetMongoQueryableAsync(); + + if (!filter.IsNullOrWhiteSpace()) + { + mongoQueryable = mongoQueryable.Where(x => + x.Name.ToLower().Contains(filter) || + x.EntityType.ToLower().Contains(filter)); + } + + return mongoQueryable; + } } }