示例#1
0
        public PagedItems <T> ListarPaginado(Expression <Func <T, bool> > predicate, PagedOptions pagedFilter)
        {
            if (string.IsNullOrEmpty(pagedFilter.Sort) && pagedFilter.SortManny == null)
            {
                var props = typeof(T)
                            .GetProperties()
                            .Where(prop =>
                                   Attribute.IsDefined(prop,
                                                       typeof(System.ComponentModel.DataAnnotations.KeyAttribute)));

                pagedFilter.Sort = props.First().Name;
            }

            PagedItems <T> paged = new PagedItems <T>();

            var query = Context
                        .Set <T>()
                        .AsNoTracking()
                        .Where(predicate)
                        .AsQueryable();

            paged.Total = query.Count();

            if (!string.IsNullOrEmpty(pagedFilter.Sort))
            {
                query = LinqExtension.OrderBy(query, pagedFilter.Sort, pagedFilter.Reverse);
            }
            else
            {
                if (pagedFilter.SortManny != null)
                {
                    var list = pagedFilter.SortManny.ToList();
                    for (int i = 0; i < list.Count; i++)
                    {
                        if (i == 0)
                        {
                            query = LinqExtension.OrderBy(query, list[i].Sort, list[i].Reverse);
                        }
                        else
                        {
                            query = LinqExtension.ThenBy(query, list[i].Sort, list[i].Reverse);
                        }
                    }
                }
            }

            var skip = (pagedFilter.Page.Value * pagedFilter.Size.Value) - pagedFilter.Size.Value;

            query = query.Skip(skip);
            query = query.Take(pagedFilter.Size.Value);

            paged.Items = query.ToList();
            return(paged);
        }
        public Task <PagedResult <TEntity> > QueryPaged(PagedOptions pagedOptions)
        {
            if (pagedOptions == null)
            {
                throw new ArgumentNullException(nameof(pagedOptions));
            }

            var query = this.Query();

            if (!string.IsNullOrEmpty(pagedOptions.OrderBy))
            {
                query = query.OrderBy(pagedOptions.OrderBy, pagedOptions.Direction);
            }

            return(query.ToPaged(pagedOptions.PageNumber, pagedOptions.PageSize, pagedOptions.IncludeTotalCount));
        }
示例#3
0
        public Task <PagedResult <TEntity> > QueryPaged(PagedOptions pagedOptions)
        {
            if (pagedOptions == null)
            {
                throw new ArgumentNullException(nameof(pagedOptions));
            }

            var find = this.Collection.Find(new BsonDocument());

            if (!string.IsNullOrWhiteSpace(pagedOptions.OrderBy))
            {
                find = find.SortBy(pagedOptions.OrderBy, (SortDirection)pagedOptions.Direction);
            }

            return(find.ToPagedAsync(pagedOptions.PageNumber, pagedOptions.PageSize, pagedOptions.IncludeTotalCount));
        }
示例#4
0
        public PagedResult <TEntity> QueryPaged(PagedOptions pagedOptions, Expression <Func <TEntity, bool> > spec)
        {
            if (pagedOptions == null)
            {
                throw new ArgumentNullException(nameof(pagedOptions));
            }

            if (spec == null)
            {
                throw new ArgumentNullException(nameof(spec));
            }

            var query = this.Query().Where(spec);

            if (!string.IsNullOrEmpty(pagedOptions.OrderBy))
            {
                query = query.OrderBy(pagedOptions.OrderBy, pagedOptions.Direction);
            }

            return(query.ToPaged(pagedOptions.PageNumber, pagedOptions.PageSize, pagedOptions.IncludeTotalCount));
        }
示例#5
0
        public override GetAllUsersResponse OnGetAllUsersExecute(GetAllUsersRequest request)
        {
            GetAllUsersResponse response = new GetAllUsersResponse();

            try
            {
                if (request != null)
                {
                    var spec = new UsuariosAllSpec(request.Filter);

                    if (request.PageSize > 0)
                    {
                        var pagedOptions = new PagedOptions()
                        {
                            Direction = request.SortDirection, OrderBy = request.PropertyName, PageNumber = request.PageNumber, PageSize = request.PageSize, IncludeTotalCount = true
                        };

                        var repository = _usuarioRepository.QueryPaged(pagedOptions, spec);

                        response.PageResult = new PagedResult <UsuarioDto>(repository.PageNumber, repository.PageSize, repository.TotalCount, _mapperService.Map <List <UsuarioDto> >(repository.DataList));
                    }
                    else
                    {
                        var repository = _usuarioRepository.Query(spec, request.PropertyName, request.SortDirection);

                        response.PageResult = new PagedResult <UsuarioDto>(0, 0, repository.Count, _mapperService.Map <List <UsuarioDto> >(repository));
                    }
                }
                else
                {
                    var usuarios = _usuarioRepository.Query(null);
                    response.PageResult = new PagedResult <UsuarioDto>(0, 0, usuarios.Count, _mapperService.Map <List <UsuarioDto> >(usuarios));
                }
            }
            catch (Exception ex)
            {
                response.Exception = ex;
            }
            return(response);
        }
示例#6
0
 public ListStoriesQuery()
 {
     Paging = new PagedOptions <Story>(1, 10, s => s.Created, false);
 }