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));
        }
 // GET: SearchItem
 public ActionResult Index(SearchItemRequestModel input)
 {
     return(View());
 }