using System.Threading.Tasks; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using Volo.Abp.Identity; using Win_in.Sfs.Auth.Application.Contracts; using Win_in.Sfs.Auth.Domain; namespace Win_in.Sfs.Auth.Application; [Authorize] [Route($"{AuthConsts.RootPath}department")] public class DepartmentAppService : SfsBaseDataWithCodeAppServiceBase , IDepartmentAppService { private readonly IdentityUserManager _identityUserManager; private new readonly IDepartmentRepository _repository; public DepartmentAppService( IDepartmentRepository repository, IdentityUserManager identityUserManager ) : base(repository) { _repository = repository; base.CreatePolicyName = DepartmentPermissions.Create; base.UpdatePolicyName = DepartmentPermissions.Update; base.DeletePolicyName = DepartmentPermissions.Delete; _identityUserManager = identityUserManager; } [AllowAnonymous] [HttpGet("by-username")] public virtual async Task GetByUsernameAsync(string username) { var user = await _identityUserManager.FindByNameAsync(username).ConfigureAwait(false); if (user == null) { return null; } var departmentCode = user.GetDepartmentCode(); if (string.IsNullOrEmpty(departmentCode)) { return null; } var deptDto = await GetByCodeAsync(departmentCode).ConfigureAwait(false); return deptDto; } [AllowAnonymous] [HttpGet("by-userid")] public virtual async Task GetByUserIdAsync(string userId) { var user = await _identityUserManager.FindByIdAsync(userId).ConfigureAwait(false); if (user == null) { return null; } var departmentCode = user.GetDepartmentCode(); if (string.IsNullOrEmpty(departmentCode)) { return null; } var deptDto = await GetByCodeAsync(departmentCode).ConfigureAwait(false); return deptDto; } [AllowAnonymous] [HttpPost("update")] public virtual async Task UpdateAsync(DepartmentCreateInput input) { var entity = ObjectMapper.Map(input); await _repository.UpdateAsync(entity).ConfigureAwait(false); } }