public async Task OnGetAsync(string searchString, int?currentPage, int?pageSize)
        {
            PageSize = pageSize.HasValue ? pageSize.Value : PaginationConstants.DefaultPageSize;

            if (!string.IsNullOrEmpty(searchString))
            {
                SearchString = searchString;
                TotalItems   = await _repository.CountAsync(new AlumnoSpec(new AlumnoFilter {
                    Apellido = searchString, IsPagingEnabled = false
                }));
            }
            else
            {
                TotalItems = await _repository.CountAsync(new AlumnoSpec(new AlumnoFilter {
                    IsPagingEnabled = false
                }));
            }

            Pager = new Pager(TotalItems, currentPage.HasValue ? currentPage.Value : PaginationConstants.DefaultPage, PageSize);

            var filter = new AlumnoFilter();

            filter.IsPagingEnabled = true;
            filter.Apellido        = searchString;
            filter.PageSize        = Pager.PageSize;
            filter.Page            = Pager.CurrentPage;

            Alumnos = await _repository.ListAsync(new AlumnoSpec(filter));
        }
예제 #2
0
        public AlumnoSpec(AlumnoFilter filter)
        {
            Query.OrderBy(x => x.Apellido).ThenByDescending(x => x.Id);

            if (filter.IsPagingEnabled)
            {
                Query.Skip(PaginationHelper.CalculateSkip(filter))
                .Take(PaginationHelper.CalculateTake(filter));
            }

            if (!string.IsNullOrEmpty(filter.Apellido))
            {
                Query.Search(x => x.Apellido, "%" + filter.Apellido + "%");
            }
        }