public PagedProductListResult Get(ProductsFilter filter) { IQueryable <Product> query = _productsRepository.Get(filter).OrderBy(entity => entity.Name); PagedProductListResult result = new PagedProductListResult(); result.TotalRecords = query.Count(); result.Entities.AddRange(query.Skip((filter.PaginationFilter.PageNumber - 1) * filter.PaginationFilter.PageSize).Take(filter.PaginationFilter.PageSize)); return(result); }
private HomePageViewModel BuildHomePageViewModel(string searchTerm, int?parentCategoryId, int?pageNumber) { HomePageViewModel viewModel = new HomePageViewModel(); viewModel.RootCategories = _productCategoriesBL.GetCategories(null).Select(productCategory => new HorizontalCategoryItemViewModel { ProductCategory = productCategory, IsSelected = false }).ToList(); viewModel.SelectedCategory = null; ProductsFilter productsFilter = new ProductsFilter { Text = searchTerm, Publish = true, ParentId = parentCategoryId }; productsFilter.PaginationFilter.PageNumber = pageNumber == null ? 1 : pageNumber.Value; productsFilter.PaginationFilter.PageSize = ApplicationSettings.Instance.AppSettings.DefaultPageSize; PagedProductListResult pagedProductListResult = _productsBL.Get(productsFilter); viewModel.Products = pagedProductListResult.Entities; viewModel.PaginationFilterViewModel = new HomePagePaginationFilterViewModel { PageNumber = productsFilter.PaginationFilter.PageNumber, TotalRecords = pagedProductListResult.TotalRecords, PageSize = productsFilter.PaginationFilter.PageSize, SearchTerm = searchTerm, ParentCategoryId = parentCategoryId }; if (parentCategoryId.HasValue) { viewModel.ParentCategories = _productCategoriesBL.GetParentCategories(parentCategoryId.Value); viewModel.SelectedCategory = _productCategoriesBL.GetById(parentCategoryId.Value); viewModel.ParentCategories.Add(viewModel.SelectedCategory); viewModel.ChildCategories = _productCategoriesBL.SearchByFilter(new ProductCategoriesFilter { ParentId = parentCategoryId, IncludeDeleted = false, Publish = true }).Entities; } else { viewModel.ParentCategories = new List <ProductCategory>(); viewModel.ChildCategories = new List <ProductCategory>(); } return(viewModel); }
public ActionResult Index(ProductsFilterViewModel filter) { if (TempData[Constants.TempDataKeys.PRODUCTS_FILTER_VIEW_MODEL] != null) { filter = (ProductsFilterViewModel)TempData[Constants.TempDataKeys.PRODUCTS_FILTER_VIEW_MODEL]; } filter.PageSize = ApplicationSettings.Instance.AppSettings.DefaultPageSize; ProductsViewModel model = new ProductsViewModel { Filter = filter }; if (ModelState.IsValid) { ModelState.RemoveStateFor(filter, viewModel => filter.Category.Name); if (filter.Category.Id.HasValue) { filter.Category.Name = _productCategoriesBL.GetById(filter.Category.Id.Value).Name; } ProductsFilter productsFilter = new ProductsFilter { ParentId = filter.Category.Id }; productsFilter.PaginationFilter.PageNumber = filter.PageNumber; productsFilter.PaginationFilter.PageSize = filter.PageSize; PagedProductListResult pagedProductListResult = _productsBL.Get(productsFilter); model.Filter.TotalRecords = pagedProductListResult.TotalRecords; model.Products = pagedProductListResult.Entities.Select(entity => new ProductListItemViewModel { Product = entity, CategoryId = filter.Category.Id }).ToList(); } return(View(model)); }