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 ); }
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); }