public void EnumerableTest() { var client = GetPagerSuccessClient(); var pager = Pager <MyResource> .Build("/resources", new Dictionary <string, object> { }, null, client); var i = 0; foreach (MyResource r in pager) { if (i < 3) { Assert.Equal("A page 1 String", r.MyString); } else { Assert.Equal("A page 2 String", r.MyString); } i++; } // There should be 5 resources since // there is a second page Assert.Equal(5, i); // We don't allow resetting pager states right now Assert.Throws <NotImplementedException>(() => { pager.Reset(); }); // should do nothing pager.Dispose(); }
public async Task <FilterProduct> FilterProduct(FilterProduct filter) { var productQuery = unitOfWork.ProductRepository.GetEntitiesQuery(); if (!string.IsNullOrEmpty(filter.Title)) { productQuery = productQuery.Where(s => s.Name.Contains(filter.Title)); } productQuery = productQuery.Where(s => s.Price >= filter.StartPrice); if (filter.Categories != null && filter.Categories.Any()) { productQuery = productQuery.SelectMany(s => s.ProductSelectedCategories.Where(f => filter.Categories.Contains(f.CategoryId)).Select(t => t.product)); } if (filter.EndPrice != 0) { productQuery = productQuery.Where(s => s.Price <= filter.EndPrice); } var count = (int)Math.Ceiling(productQuery.Count() / (double)filter.TakeEntity); var pager = Pager.Build(count, filter.PageId, filter.TakeEntity); var products = await productQuery.Paging(pager).ToListAsync(); return(filter.SetProducts(products).SetPaging(pager)); }
public async Task <FilterMessagesDTO> FilterMessages(FilterMessagesDTO filter) { var messagesQuery = messageRepository.GetEntitiesQuery().Where(w => w.IsDelete == false).AsQueryable(); if (!string.IsNullOrEmpty(filter.Title)) { messagesQuery = messagesQuery.Where(s => s.text.Contains(filter.Title)); } if (filter.Categories != null && filter.Categories.Any()) { messagesQuery = messagesQuery.SelectMany(s => s.ProductSelectedCategories.Where(f => filter.Categories.Contains(f.MessageCategoryId)).Select(t => t.Message)); } var count = (int)Math.Ceiling(messagesQuery.Count() / (double)filter.TakeEntity); var pager = Pager.Build(count, filter.PageId, filter.TakeEntity); var messages = await messagesQuery.Paging(pager).Select(s => new MessagesDTO { text = s.text, Like = s.Like, IsImportant = s.IsImportant, DisLike = s.DisLike, AuthorAvatar = s.User.Avatar, AuthorFirstName = s.User.FirstName, AuthorLastName = s.User.LastName, AuthorGender = s.User.Gender, AuthorMembershipNumber = s.User.MembershipNumber }).ToListAsync(); return(filter.SetMessages(messages).SetPaging(pager)); }
public static IHtmlString RenderPager(this HtmlHelper helper, int currentPage, int totalPages, Func <int, string> urlBuilder, string currentPageClass = "active", string ulClass = "pagination", string liDisabledClass = "disabled", Action <ContentResource> resourceOverrides = null) { return(helper.Raw(Pager.Build(currentPage, totalPages, urlBuilder, currentPageClass, ulClass, liDisabledClass, resourceOverrides).Render())); }
public AdminUsersDto GetUsersByFilter(AdminUsersDto filter) { var query = _userRepository.Get(null).AsQueryable().SetUsersFilter(filter); var count = (int)Math.Ceiling(query.Count() / (double)filter.TakeEntity); var pager = Pager.Build(count, filter.PageId, filter.TakeEntity); var users = query.OrderByDescending(s => s.Id).Paging(pager).ToList(); return(filter.SetUsers(users).SetPagingItems(pager)); }
public AllSongsDTO GetAllSongs(AllSongsDTO filter) { var query = _songRepository.Get(null).AsQueryable(); var count = (int)Math.Ceiling(query.Count() / (double)filter.TakeEntity); var pager = Pager.Build(count, filter.PageId, filter.TakeEntity); var songs = query.OrderByDescending(s => s.Id).Paging(pager).ToList(); return(new AllSongsDTO().SetSongs(songs).SetPaging(pager)); }
public async Task <FilterProductsDTO> FilterProducts(FilterProductsDTO filter) { var productsQuery = productRepository.GetEntitiesQuery().AsQueryable(); switch (filter.OrderBy) { case ProductOrderBy.PriceAsc: productsQuery = productsQuery.OrderBy(s => s.Price); break; case ProductOrderBy.PriceDec: productsQuery = productsQuery.OrderByDescending(s => s.Price); break; } if (!string.IsNullOrEmpty(filter.Title)) { productsQuery = productsQuery.Where(s => s.ProductName.Contains(filter.Title)); } if (filter.StartPrice != 0) { productsQuery = productsQuery.Where(s => s.Price >= filter.StartPrice); } if (filter.EndPrice != 0) { productsQuery = productsQuery.Where(s => s.Price <= filter.EndPrice); } productsQuery = productsQuery.Where(s => s.Price >= filter.StartPrice); if (filter.Categories != null && filter.Categories.Any()) { productsQuery = productsQuery.SelectMany(s => s.ProductSelectedCategories.Where(f => filter.Categories.Contains(f.ProductCategoryId)).Select(t => t.Product)); } if (filter.EndPrice != 0) { productsQuery = productsQuery.Where(s => s.Price <= filter.EndPrice); } var count = (int)Math.Ceiling(productsQuery.Count() / (double)filter.TakeEntity); var pager = Pager.Build(count, filter.PageId, filter.TakeEntity); var products = await productsQuery.Paging(pager).ToListAsync(); return(filter.SetProducts(products).SetPaging(pager)); }
public void PagerCountTest() { var queryParams = new Dictionary <string, object> { { "limit", 200 }, { "a", 1 }, }; var clientMock = GetPagerCountClient(); var pager = Pager <MyResource> .Build("/resources", queryParams, null, clientMock); var count = pager.Count(); Assert.Equal(42, count); }
public async Task <FilterProductsDTO> FilterProducts(FilterProductsDTO filter) { //IQueryRable<Product> = _context.product; var productQuery = _productRepository.GetEntitiesQuery().AsQueryable(); //FilterPrice switch (filter.OrderBy) { case ProductOrderBy.PriceAsc: productQuery = productQuery.OrderBy(s => s.Price); break; case ProductOrderBy.PriceDec: productQuery = productQuery.OrderByDescending(s => s.Price); break; } //Search Title Filter if (!string.IsNullOrEmpty(filter.Title)) { productQuery = productQuery.Where(s => s.ProductName.Contains(filter.Title)); } //Price Filter productQuery = productQuery.Where(s => s.Price >= filter.StartPrice); if (filter.EndPrice != 0) { productQuery = productQuery.Where(c => c.Price <= filter.EndPrice); } if (filter.categories != null && filter.categories.Any()) { productQuery = productQuery.SelectMany(s => s.ProductSelectedCategorys.Where(f => filter.categories.Contains(f.ProductCategoryId)).Select(t => t.Product)); } //اعداد محصولات var count = (int)Math.Ceiling(productQuery.Count() / (double)filter.TakeEntity); var pager = Pager.Build(count, filter.pageId, filter.TakeEntity); var products = await productQuery.Paging(pager).ToListAsync(); //برای این ما خود فیلتر را برمیگردونیم که اگر در فیلتر محصولات استرینگی پر باشد پر باقی بماند return(filter.SetProducts(products).SetPaging(pager)); }
public void EmptyEnumerableTest() { var pager = Pager <MyResource> .Build("/next", new Dictionary <string, object> { }, GetEmptyPagerClient()); var i = 0; foreach (MyResource r in pager) { Assert.True(false, "Should not be iterating anything if response is empty"); } // There should be 0 resources Assert.Equal(0, i); }
public void PagerFirstTest() { var paramsMatcher = MockClient.QueryParameterMatcher(new Dictionary <string, object> { { "limit", "1" }, { "a", "1" }, }); var client = MockClient.Build(paramsMatcher, PagerFirstResponse()); var queryParams = new Dictionary <string, object> { { "limit", "200" }, { "a", "1" }, }; var pager = Pager <MyResource> .Build("/resources", queryParams, null, client); var resource = pager.First(); Assert.Equal("First Resource", resource.MyString); }
public void EnumerablePagesTest() { var client = GetPagerSuccessClient(); var pager = Pager <MyResource> .Build("/resources", new Dictionary <string, object> { }, null, client); var total = 0; var page = 0; while (pager.HasMore) { pager.FetchNextPage(); var count = 0; page++; foreach (MyResource r in pager.Data) { count++; total++; } if (page == 1) { Assert.Equal(3, count); } else if (page == 2) { Assert.Equal(2, count); } else { Assert.True(false, $"Should not have reached this page: {page}"); } } // There should be 5 resources since // there is a second page Assert.Equal(5, total); }
public static IHtmlContent RenderPager(this IHtmlHelper helper, int currentPage, int totalPages, Func <int, string> urlBuilder) { return(helper.Raw(Pager.Build(currentPage, totalPages, urlBuilder).Render())); }