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)); }
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 + "%"); } }