using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.Threading.Tasks; using Microsoft.AspNetCore.Authorization; using Sozsoft.Languages.Entities; using Sozsoft.Languages.Localization; using Sozsoft.Languages.Permissions; using Volo.Abp.Application.Dtos; using Volo.Abp.Application.Services; using Volo.Abp.Domain.Entities; using Volo.Abp.Domain.Repositories; using Volo.Abp.Validation; namespace Sozsoft.Languages; [Authorize] public class LanguageAppService : CrudAppService< Language, LanguageDto, Guid, PagedAndSortedResultRequestDto>, ILanguageAppService { public LanguageAppService(IRepository repository) : base(repository) { LocalizationResource = typeof(LanguagesResource); ObjectMapperContext = typeof(LanguagesApplicationModule); GetPolicyName = LanguagesPermissions.Language.Default; GetListPolicyName = LanguagesPermissions.Language.Default; CreatePolicyName = LanguagesPermissions.Language.Create; UpdatePolicyName = LanguagesPermissions.Language.Update; DeletePolicyName = LanguagesPermissions.Language.Delete; } public override async Task CreateAsync(LanguageDto input) { var recordExists = await Repository.AnyAsync(a => a.CultureName == input.CultureName); if (recordExists) { var validationErrors = new ValidationResult( L["Error:UniqueControl"], new string[] { "CultureName" } ); throw new AbpValidationException(new List { validationErrors }); } return await base.CreateAsync(input); } [Authorize(LanguagesPermissions.Language.Default)] public async Task GetLanguageByCultureNameAsync(string CultureName) { var item = await Repository.FirstOrDefaultAsync(a => a.CultureName == CultureName); if (item is null) { throw new EntityNotFoundException(L["RecordNotFound"]); } return ObjectMapper.Map(item); } }