예제 #1
0
        public ListPage<ITinyProduct> GetTinyProductsByCategory(int categoryID, ListPageSpec<ITinyProduct> pageSpec) 
        {
            var products = GetProductsByCategory(categoryID, new ListPageSpec<IProduct>(
                                                                        pageSpec.PageIndex, 
                                                                        pageSpec.PageSize));

            var tinyProds = products
                            .Select(p => {
                                var tp = Mapper.Map<TinyProduct>(p);

                                var pic = ((Product)p).ProductPictures
                                                            .OrderBy(pp => pp.DisplayOrder)
                                                            .FirstOrDefault();

                                tp.PictureID = pic != null 
                                                    ? (int?)pic.PictureId 
                                                    : null;

                                return tp;
                            });

            return new ListPage<ITinyProduct>(
                                        tinyProds,
                                        products.PageIndex,
                                        products.PageSize,
                                        products.PageCount
                                        );
        }
예제 #2
0
        public ListPage<IProduct> GetProductsByCategory(int categoryID, ListPageSpec<IProduct> pageSpec) 
        {          
            var cats = _cats.FindCatFamily(categoryID) //array for EF's sake
                                    .Select(c => c.ID)
                                    .ToArray();

            var productCount = _repo.Count(p => p.ProductCategories
                                                    .Any(c => cats.Contains(c.CategoryId)));

            var products = _repo.Include(p => p.ProductPictures)
                                    .OrderByDescending(p => p.ID)
                                    .Where(p => p.ProductCategories.Any(c => cats.Contains(c.CategoryId)))
                                    .Skip(pageSpec.PageIndex * pageSpec.PageSize)
                                    .Take(pageSpec.PageSize)
                                    .ToArray();
            
            _localizer.Localize(products);

            return new ListPage<IProduct>(
                                    products,
                                    pageSpec.PageIndex,
                                    pageSpec.PageSize,
                                    productCount / pageSpec.PageSize + 1);            
        }