/// <summary> /// Colocar este método em um serviço /// </summary> /// <param name="request">Objeto com filtro das pesquisas</param> /// <returns></returns> private async Task <FindAllUsuarioResponse> SearchAll(FindAllUsuarioRequest request) { var collection = _userManager.Users .Where(x => (x.Name.Contains(request.Nome ?? string.Empty) || x.Surname.Contains(request.Nome ?? string.Empty)) ); // SOMENTE QUEM TEM PERMISSÃO COMO ADMINISTRADOR POR FAZER ALTERAÇÃO EM USUÁRIOS ADMINS var perfil = User.GetRoles().FirstOrDefault(); if (perfil != EnumPerfil.Sistema.ToDescription() && perfil != EnumPerfil.Administrador.ToDescription()) { collection = collection.Where(x => !x.Roles.Any(y => y.RoleId == ((int)EnumPerfil.Administrador).ToString() || y.RoleId == ((int)EnumPerfil.Sistema).ToString())); } var length = await collection.CountAsync(); var paginated = await collection .Include(x => x.Roles) .OrderBy(x => x.Name) .Skip(request.PageSize * (request.PageIndex - 1)) .Take(request.PageSize) .ToListAsync(); var schemaCollection = paginated.ConvertEntityToSchema <UsuarioSchema>(); return(new FindAllUsuarioResponse(request.PageIndex, request.PageSize, length, schemaCollection)); }
public async Task <ActionResult> FindAll([FromQuery] FindAllUsuarioRequest request) { var response = await SearchAll(request); return(Ok(response)); }