public RoleResponse Map(DbRole role, List <DbRightsLocalization> rights, List <UserData> users) { if (role == null) { return(null); } var userInfos = users?.Select(_userInfoMapper.Map).ToList(); return(new RoleResponse { Role = _roleInfoMapper.Map(role, rights.Select(_rightMapper.Map).ToList(), userInfos), Users = userInfos?.Where(ui => role.Users.Any(ud => ud.UserId == ui.Id)).ToList() }); }
public async Task <FindResultResponse <RoleInfo> > ExecuteAsync(FindRolesFilter filter) { if (!_findFilterValidator.ValidateCustom(filter, out List <string> errors)) { _httpContextAccessor.HttpContext.Response.StatusCode = (int)HttpStatusCode.BadRequest; return(new FindResultResponse <RoleInfo> { Status = OperationResultStatusType.Failed, Errors = errors }); } FindResultResponse <RoleInfo> result = new(); (List <(DbRole role, List <DbRightsLocalization> rights)> roles, int totalCount) = filter.IncludeDeactivated ? await _roleRepository.FindAllAsync(filter) : await _roleRepository.FindActiveAsync(filter); result.TotalCount = totalCount; List <Guid> usersIds = new(); foreach ((DbRole role, List <DbRightsLocalization> rights) in roles) { usersIds.Add(role.CreatedBy); if (role.ModifiedBy.HasValue) { usersIds.Add(role.ModifiedBy.Value); } } List <UserInfo> usersInfos = (await GetUsersAsync(usersIds.Distinct().ToList(), errors))? .Select(_userInfoMapper.Map) .ToList(); result.Body = roles.Select( pair => _roleInfoMapper.Map(pair.role, pair.rights.Select(_rightMapper.Map).ToList(), usersInfos)).ToList(); result.Errors = errors; result.Status = errors.Any() ? OperationResultStatusType.PartialSuccess : OperationResultStatusType.FullSuccess; return(result); }