private void Init() { var expression = new List <string>(); if (_criteria.Filters != null && _criteria.Filters.Filters.Any()) { expression.Add(_criteria.Filters.ToString()); } if (_criteria.Sort != null) { expression.Add(_criteria.Sort.ToString()); } if (_criteria.FullTextSearch != null) { expression.Add(_criteria.FullTextSearch.ToString()); } _expression = $"{_criteria.Path}?{string.Join("&", expression)}"; var totalPage = (int)Math.Ceiling((double)Total / _criteria.Paginate.Limit); _first = new PaginateExpression(1, _criteria.Paginate.Limit); _last = new PaginateExpression(totalPage, _criteria.Paginate.Limit); if (_criteria.Paginate.Page > 1) { _prev = new PaginateExpression(_criteria.Paginate.Page - 1, _criteria.Paginate.Limit); } if (_criteria.Paginate.Page >= totalPage) { return; } _next = new PaginateExpression(_criteria.Paginate.Page + 1, _criteria.Paginate.Limit); }
public Criteria(string path, IQueryCollection query) { Path = path; Paginate = PaginateExpression.Extract(query); Slice = SliceExpression.Extract(query); FullTextSearch = FullTextSearchExpression <TIn> .Extract(query); Sort = OrderByExpression <TIn> .Extract(query); Filters = FilterCollectionExpression <TIn> .Extract(query); Operators = OperatorCollectionExpression <TIn> .Extract(query); Embeds = EmbedCollectionExpression <TIn> .Extract(query); }
public void PaginateExpression_Page_1_With_Default_Limit() { //Arrange var values = new Dictionary <string, StringValues> { { "_page", new StringValues("7") } }; var query = new QueryCollection(values); //Act var paginate = PaginateExpression.Extract(query); var text = paginate.ToString(); //Assert text.Should().Be("_page=7&_limit=10"); }
public void PaginateExpression_Page_Empty() { //Arrange var values = new Dictionary <string, StringValues> { { "_pages", new StringValues("7") } }; var query = new QueryCollection(values); //Act var paginate = PaginateExpression.Extract(query); //Assert paginate.Should().BeNull(); }