public int GetProductPagesCount(PageEnumerator elementsPerPage) { var productCount = this.Context.Products.Where(product => product.IsActive).Count(product => product.IsActive); int pageEleemnts = (int)elementsPerPage; return((int)Math.Ceiling((decimal)(productCount / pageEleemnts))); }
public ICollection <ProductViewModel> GetProductsViewModel(PageEnumerator pageType, int page, string sorting, Category category) { var pageCount = Convert.ToInt32(pageType); var sortRule = this.Context.SortingRules.FirstOrDefault(sort => sort.Name == sorting); page = page - 1; if (sortRule == null || page < 0) { return(null); } var products = this.Context .Products .Where(product => product.Category.Id == category.Id && product.IsActive) .Select(product => new ProductViewModel { Id = product.Id, Name = product.Name, Price = "€ " + product.Prices.FirstOrDefault(price => price.Currency.IsoCode == "EUR").Value, CategorySortingRule = product.Category.SortingRule, DefaultImageName = product.Images .FirstOrDefault(image => image.isDefault == true) .File }) .ToList(); return(products .OrderBy(sortRule.ProductSortParameter + " " + sortRule.SortingType) .OrderBy(product => product.CategorySortingRule) .Skip(page * pageCount) .Take(pageCount) .ToList()); }
public ICollection <ProductAdminViewModel> GetProductsAdminViewModel(PageEnumerator pageType, int page) { var pageCount = Convert.ToInt32(pageType); page -= 1; var products = this.Context .Products .Where(product => product.IsActive) .Select(product => new ProductAdminViewModel { Id = product.Id, Name = product.Name, Prices = product.Prices, IsActive = product.IsActive, Category = product.Category, Images = product.Images, ProductParameters = product.ProductParameters, Descriptions = product.Descriptions, PreviewCount = product.PreviewCount, SkuId = product.SkuId, AddedDateTime = product.AddedDateTime, ManifactureId = product.ManifactureId, OnlineFromDate = product.OnlineFromDate, Tag = product.Tag }) .ToList(); return(products .Skip(page * pageCount) .Take(pageCount) .ToList()); }
public void Enumeration_OnePageAmount_ItMustEnumerateCorrectly() { PageEnumerator <long> pageEnumerator = new PageEnumerator <long>(0, l => l + 1); foreach (long page in pageEnumerator) { Assert.Equal(1, page); } }
public void Enumeration_MoreThanOnePageAmount_ItMustEnumerateCorrectly() { int expectedPages = 5; int nextNumberGetterCalls = 0; Func <int, int> nextNumberGetter = i => { nextNumberGetterCalls++; return(i + 1); }; PageEnumerator <int> pageEnumerator = new PageEnumerator <int>(0, nextNumberGetter); pageEnumerator.SetLastPage(expectedPages); Assert.Equal(expectedPages, pageEnumerator.Count()); int expectedCurrentPage = 1; foreach (long page in pageEnumerator) { Assert.Equal(expectedCurrentPage++, page); } Assert.Equal(1 + expectedPages * 2, nextNumberGetterCalls); }