using Microsoft.IdentityModel.Tokens; namespace Brizco.Repository.Handlers.Complexes; public class GetComplexUsersQueryHandler( IRepositoryWrapper repositoryWrapper, UserManager userManager, RoleManager roleManager) : IRequestHandler> { public async Task> Handle(GetComplexUsersQuery request, CancellationToken cancellationToken) { List list = new List(); if (!request.ComplexId.IsNullOrEmpty() && Guid.TryParse(request.ComplexId, out Guid complexId)) { list = await repositoryWrapper.SetRepository().TableNoTracking .Where(c => c.ComplexId == complexId) .OrderByDescending(s => s.CreatedAt) .Skip(request.Page * 15).Take(15) .Select(ComplexUserMapper.ProjectToSDto) .ToListAsync(cancellationToken); } else { list = await repositoryWrapper.SetRepository().TableNoTracking .OrderByDescending(s => s.CreatedAt) .Skip(request.Page * 15).Take(15) .Select(ComplexUserMapper.ProjectToSDto) .ToListAsync(cancellationToken); } foreach (var complexUser in list) { var user = await userManager.FindByIdAsync(complexUser.UserId.ToString()); if (user != null) { var roleIds = await userManager.GetRolesAsync(user); foreach (var roleId in roleIds) { var role = await roleManager.FindByNameAsync(roleId); if(role!= null) complexUser.RoleNames.Add(role.PersianName); } } } return list; } }