示例#1
0
        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)));
        }
示例#2
0
        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());
        }
示例#3
0
        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());
        }
示例#4
0
        public void Enumeration_OnePageAmount_ItMustEnumerateCorrectly()
        {
            PageEnumerator <long> pageEnumerator = new PageEnumerator <long>(0, l => l + 1);

            foreach (long page in pageEnumerator)
            {
                Assert.Equal(1, page);
            }
        }
示例#5
0
        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);
        }