コード例 #1
0
        /// <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));
        }
コード例 #2
0
        public async Task <ActionResult> FindAll([FromQuery] FindAllUsuarioRequest request)
        {
            var response = await SearchAll(request);

            return(Ok(response));
        }