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);
        }
Пример #2
0
        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);
        }