using System.Threading.Tasks; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using Microsoft.Extensions.Configuration; 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; private readonly IConfiguration _configuration; public DepartmentAppService( IDepartmentRepository repository, IdentityUserManager identityUserManager, IConfiguration configuration) : base(repository) { _repository = repository; base.CreatePolicyName = DepartmentPermissions.Create; base.UpdatePolicyName = DepartmentPermissions.Update; base.DeletePolicyName = DepartmentPermissions.Delete; _identityUserManager = identityUserManager; _configuration = configuration; } [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); if (username.ToLower() == "wms") { var depCode=_configuration["WmsDepCode"]; deptDto.Code = depCode; } 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); } }