Abp模块
abp
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

70 lines
2.4 KiB

using Sanhe.Abp.LocalizationManagement.Permissions;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Volo.Abp.Application.Dtos;
using Volo.Abp.Application.Services;
namespace Sanhe.Abp.LocalizationManagement;
public class LanguageAppService : CrudAppService<
Language,
LanguageDto,
Guid,
GetLanguagesInput,
CreateOrUpdateLanguageInput,
CreateOrUpdateLanguageInput>, ILanguageAppService
{
public LanguageAppService(ILanguageRepository repository) : base(repository)
{
GetPolicyName = LocalizationManagementPermissions.Language.Default;
GetListPolicyName = LocalizationManagementPermissions.Language.Default;
CreatePolicyName = LocalizationManagementPermissions.Language.Create;
UpdatePolicyName = LocalizationManagementPermissions.Language.Update;
DeletePolicyName = LocalizationManagementPermissions.Language.Delete;
}
public async virtual Task<ListResultDto<LanguageDto>> GetAllAsync()
{
await CheckGetListPolicyAsync();
var languages = await Repository.GetListAsync();
return new ListResultDto<LanguageDto>(
ObjectMapper.Map<List<Language>, List<LanguageDto>>(languages));
}
protected override Language MapToEntity(CreateOrUpdateLanguageInput createInput)
{
return new Language(
createInput.CultureName,
createInput.UiCultureName,
createInput.DisplayName,
createInput.FlagIcon)
{
Enable = createInput.Enable
};
}
protected override void MapToEntity(CreateOrUpdateLanguageInput updateInput, Language entity)
{
if (!string.Equals(entity.FlagIcon, updateInput.FlagIcon, StringComparison.InvariantCultureIgnoreCase))
{
entity.FlagIcon = updateInput.FlagIcon;
}
entity.ChangeCulture(updateInput.CultureName, updateInput.UiCultureName, updateInput.DisplayName);
entity.Enable = updateInput.Enable;
}
protected async override Task<IQueryable<Language>> CreateFilteredQueryAsync(GetLanguagesInput input)
{
var query = await base.CreateFilteredQueryAsync(input);
query = query.WhereIf(!input.Filter.IsNullOrWhiteSpace(),
x => x.CultureName.Contains(input.Filter) || x.UiCultureName.Contains(input.Filter) ||
x.DisplayName.Contains(input.Filter));
return query;
}
}