Api/Brizco.Repository/Handlers/Complexes/GetComplexUsersQueryHandler.cs

52 lines
1.9 KiB
C#
Raw Normal View History

using Microsoft.IdentityModel.Tokens;
2023-10-13 16:25:34 +03:30
namespace Brizco.Repository.Handlers.Complexes;
2023-10-13 16:25:34 +03:30
2024-08-09 21:42:04 +03:30
public class GetComplexUsersQueryHandler(
IRepositoryWrapper repositoryWrapper,
UserManager<ApplicationUser> userManager,
RoleManager<ApplicationRole> roleManager)
: IRequestHandler<GetComplexUsersQuery, List<ComplexUserSDto>>
2023-10-13 16:25:34 +03:30
{
public async Task<List<ComplexUserSDto>> Handle(GetComplexUsersQuery request, CancellationToken cancellationToken)
{
2023-10-24 15:36:09 +03:30
List<ComplexUserSDto> list = new List<ComplexUserSDto>();
2023-10-13 16:25:34 +03:30
if (!request.ComplexId.IsNullOrEmpty() && Guid.TryParse(request.ComplexId, out Guid complexId))
2023-10-24 15:36:09 +03:30
{
2024-08-09 21:42:04 +03:30
list = await repositoryWrapper.SetRepository<ComplexUser>().TableNoTracking
2023-10-13 16:25:34 +03:30
.Where(c => c.ComplexId == complexId)
.OrderByDescending(s => s.CreatedAt)
.Skip(request.Page * 15).Take(15)
.Select(ComplexUserMapper.ProjectToSDto)
.ToListAsync(cancellationToken);
2023-10-24 15:36:09 +03:30
}
else
{
2024-08-09 21:42:04 +03:30
list = await repositoryWrapper.SetRepository<ComplexUser>().TableNoTracking
2023-10-24 15:36:09 +03:30
.OrderByDescending(s => s.CreatedAt)
.Skip(request.Page * 15).Take(15)
.Select(ComplexUserMapper.ProjectToSDto)
.ToListAsync(cancellationToken);
}
2023-10-13 16:25:34 +03:30
2023-10-24 15:36:09 +03:30
foreach (var complexUser in list)
{
2024-08-09 21:42:04 +03:30
var user = await userManager.FindByIdAsync(complexUser.UserId.ToString());
2023-10-24 15:36:09 +03:30
if (user != null)
{
2024-08-09 21:42:04 +03:30
var roleIds = await userManager.GetRolesAsync(user);
2023-10-24 15:36:09 +03:30
foreach (var roleId in roleIds)
{
2024-08-09 21:42:04 +03:30
var role = await roleManager.FindByNameAsync(roleId);
2023-10-24 15:36:09 +03:30
if(role!= null)
complexUser.RoleNames.Add(role.PersianName);
}
}
}
2023-10-13 16:25:34 +03:30
2023-10-24 15:36:09 +03:30
return list;
2023-10-13 16:25:34 +03:30
}
}