public ActionResult ViewPage(int page = 1, int pageSize = 5) { if (this.HttpContext.Cache["data"] == null) { return RedirectToAction("SearchByWord"); } var count = ((IQueryable<Item>)this.HttpContext.Cache["data"]).Count(); var items = ((IQueryable<Item>)this.HttpContext.Cache["data"]).OrderBy(e => e.DateCreated).Skip((page - 1) * pageSize).Take(pageSize); var viewItems = items.ProjectTo<ItemResponseViewModel>(); var totalPages = Math.Ceiling((decimal)count / pageSize); var data = new ItemSearchViewModel() { CurrentPage = page, PageSize = pageSize, Items = viewItems.ToList(), TotalPages = totalPages }; return View("Index", data); }
public ActionResult Search(SearchItemRequestModel input) { int page = 1; string word = ""; if (input.Search != null) { word = input.Search; } var items = itemRepository.All().Where(i => i.Title.Contains(word) || i.Description.Contains(word)); if (input.Category != null) { var categoriesString = String.Join("", input.Category); items = items.Where(i => categoriesString.Contains(i.Category.Name)); } decimal totalPages = Math.Ceiling((decimal)items.Count() / input.PageSize); switch (input.Sort) { case "Description": items = items.OrderBy(e => e.Description).Skip((page - 1) * input.PageSize).Take(input.PageSize); break; case "Title": items = items.OrderBy(e => e.Title).Skip((page - 1) * input.PageSize).Take(input.PageSize); break; case "Date": items = items.OrderBy(e => e.DateCreated).Skip((page - 1) * input.PageSize).Take(input.PageSize); break; } var viewItems = items.ProjectTo<ItemResponseViewModel>(); this.HttpContext.Cache["data"] = items; var viewData = new ItemSearchViewModel() { CurrentPage = page, Items = viewItems.ToList(), TotalPages = totalPages }; return View("Index", viewData); }
public ActionResult SearchByWord() { string word = Request.QueryString["Search"]; var items = itemRepository.All().Where(i => i.Title.Contains(word) || i.Description.Contains(word)); this.HttpContext.Cache["data"] = items; var viewItems = items.ProjectTo<ItemResponseViewModel>(); var viewData = new ItemSearchViewModel() { CurrentPage = 1, Items = viewItems.ToList(), TotalPages = Math.Ceiling((decimal)viewItems.Count() / 5), PageSize = 5 }; return View("Index", viewData); }