Browse Source

CmsKit - Refactoring for TagAdminAppService

pull/8143/head
enisn 6 years ago
parent
commit
ff11212f40
  1. 2
      modules/cms-kit/src/Volo.CmsKit.Admin.Application/Volo/CmsKit/Admin/CmsKitAdminApplicationAutoMapperProfile.cs
  2. 72
      modules/cms-kit/src/Volo.CmsKit.Admin.Application/Volo/CmsKit/Admin/Tags/TagAdminAppService.cs
  3. 2
      modules/cms-kit/src/Volo.CmsKit.Common.Application.Contracts/Volo/CmsKit/Tags/TagDto.cs
  4. 4
      modules/cms-kit/src/Volo.CmsKit.Domain/Volo/CmsKit/Tags/ITagRepository.cs
  5. 28
      modules/cms-kit/src/Volo.CmsKit.EntityFrameworkCore/Volo/CmsKit/Tags/EfCoreTagRepository.cs
  6. 31
      modules/cms-kit/src/Volo.CmsKit.MongoDB/Volo/CmsKit/MongoDB/Tags/MongoTagRepository.cs

2
modules/cms-kit/src/Volo.CmsKit.Admin.Application/Volo/CmsKit/Admin/CmsKitAdminApplicationAutoMapperProfile.cs

@ -34,6 +34,8 @@ namespace Volo.CmsKit.Admin
CreateMap<TagEntityTypeDefiniton, TagDefinitionDto>(MemberList.Destination);
CreateMap<Tag, TagDto>();
CreateMap<MediaDescriptor, MediaDescriptorDto>();
}
}

72
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<Tag, Guid> 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<TagDto> CreateAsync(TagCreateDto input)
public async Task<TagDto> 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, TagDto>(tag);
}
[Authorize(CmsKitAdminPermissions.Tags.Update)]
public override async Task<TagDto> UpdateAsync(Guid id, TagUpdateDto input)
public async Task<TagDto> 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<IQueryable<Tag>> 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, TagDto>(tag);
}
[Authorize(CmsKitAdminPermissions.Tags.Default)]
public virtual async Task<List<TagDefinitionDto>> 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<TagDto> GetAsync(Guid id)
{
var tag = await Repository.GetAsync(id);
return ObjectMapper.Map<Tag, TagDto>(tag);
}
[Authorize(CmsKitAdminPermissions.Tags.Default)]
public async Task<PagedResultDto<TagDto>> GetListAsync(TagGetListInput input)
{
var tags = await Repository.GetListAsync(input.Filter);
var count = await Repository.GetCountAsync(input.Filter);
return new PagedResultDto<TagDto>(
count,
ObjectMapper.Map<List<Tag>, List<TagDto>>(tags)
);
}
[Authorize(CmsKitAdminPermissions.Tags.Delete)]
public async Task DeleteAsync(Guid id)
{
await Repository.DeleteAsync(id);
}
}
}

2
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; }
}
}

4
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<List<Tag>> GetListAsync(string filter);
Task<int> GetCountAsync(string filter);
Task<List<Tag>> GetAllRelatedTagsAsync(
[NotNull] string entityType,
[NotNull] string entityId,

28
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<EntityTag>()
.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<List<Tag>> GetListAsync(string filter)
{
return await (await GetQueryableByFilterAsync(filter)).ToListAsync();
}
public async Task<int> GetCountAsync(string filter)
{
return await (await GetQueryableByFilterAsync(filter)).CountAsync();
}
private async Task<IQueryable<Tag>> GetQueryableByFilterAsync(string filter)
{
return (await GetQueryableAsync())
.WhereIf(
!filter.IsNullOrEmpty(),
x =>
x.Name.ToLower().Contains(filter) ||
x.EntityType.ToLower().Contains(filter));
}
}
}

31
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<List<Tag>> GetListAsync(string filter)
{
return await (await GetQueryableByFilterAsync(filter)).ToListAsync();
}
public async Task<int> GetCountAsync(string filter)
{
return await (await GetQueryableByFilterAsync(filter)).CountAsync();
}
private async Task<IMongoQueryable<Tag>> 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;
}
}
}

Loading…
Cancel
Save