public ActionResult AjaxHandler(JQueryDataTableParamModel param) { var allPosts = DataRepository.GetPosts(); IEnumerable<PostModel> filteredPosts; //Check whether the companies should be filtered by keyword if (!string.IsNullOrEmpty(param.sSearch)) { //Used if particulare columns are filtered var LandlordFilter = Convert.ToString(Request["sSearch_1"]); var TitleFilter = Convert.ToString(Request["sSearch_2"]); var StreetFilter = Convert.ToString(Request["sSearch_3"]); var CityFilter = Convert.ToString(Request["sSearch_4"]); var ZipCodeFilter = Convert.ToString(Request["sSearch_5"]); //Optionally check whether the columns are searchable at all var isLandlordSearchable = Convert.ToBoolean(Request["bSearchable_1"]); var isTitleSearchable = Convert.ToBoolean(Request["bSearchable_2"]); var isStreetSearchable = Convert.ToBoolean(Request["bSearchable_3"]); var isCitySearchable = Convert.ToBoolean(Request["bSearchable_4"]); var isZipCodeSearchable = Convert.ToBoolean(Request["bSearchable_5"]); filteredPosts = DataRepository.GetPosts() .Where(c => c.ZipCode.ToString().Contains(param.sSearch) || c.LandLord.ToLower().Contains(param.sSearch.ToLower()) || c.Street.ToLower().Contains(param.sSearch.ToLower()) || c.City.ToLower().Contains(param.sSearch.ToLower()) || c.Title.ToLower().Contains(param.sSearch.ToLower())); } else { filteredPosts = allPosts; } var isLandlordSortable = Convert.ToBoolean(Request["bSortable_1"]); var isTitleSortable = Convert.ToBoolean(Request["bSortable_2"]); var isStreetSortable = Convert.ToBoolean(Request["bSortable_3"]); var isCitySortable = Convert.ToBoolean(Request["bSortable_4"]); var isZipCodeSortable = Convert.ToBoolean(Request["bSortable_5"]); var isRatingSortable = Convert.ToBoolean(Request["bSortable_6"]); var sortColumnIndex = Convert.ToInt32(Request["iSortCol_0"]); Func<PostModel, string> orderingFunction = (c => sortColumnIndex == 1 && isLandlordSortable ? c.LandLord : sortColumnIndex == 2 && isTitleSortable ? c.Title : sortColumnIndex == 3 && isStreetSortable ? c.Street : sortColumnIndex == 4 && isCitySortable ? c.City : sortColumnIndex == 5 && isZipCodeSortable ? c.ZipCode.ToString() : sortColumnIndex == 6 && isRatingSortable ? c.Rating.ToString() : ""); var sortDirection = Request["sSortDir_0"]; // asc or desc if (sortDirection == "asc") filteredPosts = filteredPosts.OrderBy(orderingFunction); else filteredPosts = filteredPosts.OrderByDescending(orderingFunction); var displayedPosts = filteredPosts.Skip(param.iDisplayStart).Take(param.iDisplayLength); var result = from c in displayedPosts select new[] { Convert.ToString(c.Id), c.LandLord, c.Title, c.Street, c.City, c.ZipCode.ToString(), c.Rating.ToString()}; return Json(new { sEcho = param.sEcho, iTotalRecords = allPosts.Count(), iTotalDisplayRecords = filteredPosts.Count(), aaData = result }, JsonRequestBehavior.AllowGet); }
public ActionResult AjaxHandler(JQueryDataTableParamModel param) { var allmessages = _repository.SelectThreads(); IEnumerable<Message> filteredmessages; //Check whether the messages should be filtered by keyword if (!string.IsNullOrEmpty(param.sSearch)) { //Used if particulare columns are filtered var UserFilter = Convert.ToString(Request["sSearch_1"]); var SubjectFilter = Convert.ToString(Request["sSearch_2"]); var LandlordFilter = Convert.ToString(Request["sSearch_3"]); var DateFilter = Convert.ToString(Request["sSearch_4"]); //Optionally check whether the columns are searchable at all var isUserSearchable = Convert.ToBoolean(Request["bSearchable_1"]); var isSubjectSearchable = Convert.ToBoolean(Request["bSearchable_2"]); var isLandlordSearchable = Convert.ToBoolean(Request["bSearchable_3"]); var isDateSearchable = Convert.ToBoolean(Request["bSearchable_4"]); filteredmessages = _repository.SelectThreads() .Where(c => isUserSearchable && c.LandLord.ToLower().Contains(param.sSearch.ToLower()) || isSubjectSearchable && c.LLemail.ToLower().Contains(param.sSearch.ToLower()) || isLandlordSearchable && c.DatePosted.Contains(param.sSearch.ToLower()) || isDateSearchable && c.Title.Contains(param.sSearch.ToLower())); } else { filteredmessages = allmessages; } var isLandLordSortable = Convert.ToBoolean(Request["bSortable_1"]); var isLLemailSortable = Convert.ToBoolean(Request["bSortable_2"]); var isDatePostedSortable = Convert.ToBoolean(Request["bSortable_3"]); var isTitleSortable = Convert.ToBoolean(Request["bSortable_4"]); var sortColumnIndex = Convert.ToInt32(Request["iSortCol_0"]); Func<PostModel, string> orderingFunction = (c => sortColumnIndex == 1 && isLandLordSortable ? c.LandLord : sortColumnIndex == 2 && isLLemailSortable ? c.LLemail : sortColumnIndex == 3 && isDatePostedSortable ? c.DatePosted : sortColumnIndex == 3 && isTitleSortable ? c.Title : ""); var sortDirection = Request["sSortDir_0"]; // asc or desc if (sortDirection == "asc") filteredmessages = filteredmessages.OrderBy(orderingFunction); else filteredmessages = filteredmessages.OrderByDescending(orderingFunction); var displayedmessages = filteredmessages.Skip(param.iDisplayStart).Take(param.iDisplayLength); var result = from c in displayedmessages select new[] { Convert.ToString(c.Id), c.Title, c.LandLord, c.LLemail, c.DatePosted, }; return Json(new { sEcho = param.sEcho, iTotalRecords = allmessages.Count, iTotalDisplayRecords = filteredmessages.Count(), aaData = result }, JsonRequestBehavior.AllowGet); }