BgEngine.Controllers.PostController.Index C# (CSharp) Method

Index() private method

private Index ( int page, string sort, string sortdir, string searchstring ) : System.Web.Mvc.ViewResult
page int
sort string
sortdir string
searchstring string
return System.Web.Mvc.ViewResult
        public ViewResult Index(int? page, string sort, string sortdir,string searchstring)
        {
            ViewBag.RowsPerPage = BgResources.Pager_PostPerPage;
               if (!String.IsNullOrEmpty(searchstring))
            {
                Session["searchstring"] = searchstring;
            }
            else
            {
                Session["searchstring"] = String.Empty;
            }
            var pageIndex = page ?? 0;
            bool dir;
            if (sortdir == null)
            {
                dir = false;
            }
            else
            {
                dir = sortdir.Equals("ASC", StringComparison.CurrentCultureIgnoreCase) ? true : false;
            }

            if (sort == null)
            {
                 Posts = BlogServices.SearchForPagedPostsByParam(pageIndex, Int32.Parse(BgResources.Pager_PostPerPage), p => p.DateCreated, dir, Session["searchstring"].ToString());
            }
            else
            {
                switch (sort.ToLower())
                {
                    case "title":
                        Posts = BlogServices.SearchForPagedPostsByParam(pageIndex, Int32.Parse(BgResources.Pager_PostPerPage), p => p.Title, dir, Session["searchstring"].ToString());
                        break;
                    case "datecreated":
                        Posts = BlogServices.SearchForPagedPostsByParam(pageIndex, Int32.Parse(BgResources.Pager_PostPerPage), p => p.DateCreated, dir, Session["searchstring"].ToString());
                        break;
                    case "dateupdated":
                        Posts = BlogServices.SearchForPagedPostsByParam(pageIndex, Int32.Parse(BgResources.Pager_PostPerPage), p => p.DateUpdated, dir, Session["searchstring"].ToString());
                        break;
                    case "ispublic":
                        Posts = BlogServices.SearchForPagedPostsByParam(pageIndex, Int32.Parse(BgResources.Pager_PostPerPage), p => p.IsPublic, dir, Session["searchstring"].ToString());
                        break;
                    case "ishomepost":
                        Posts = BlogServices.SearchForPagedPostsByParam(pageIndex, Int32.Parse(BgResources.Pager_PostPerPage), p => p.IsHomePost, dir, Session["searchstring"].ToString());
                        break;
                    case "isaboutme":
                        Posts = BlogServices.SearchForPagedPostsByParam(pageIndex, Int32.Parse(BgResources.Pager_PostPerPage), p => p.IsAboutMe, dir, Session["searchstring"].ToString());
                        break;
                    case "allowanonymouscomments":
                        Posts = BlogServices.SearchForPagedPostsByParam(pageIndex, Int32.Parse(BgResources.Pager_PostPerPage), p => p.AllowAnonymousComments, dir, Session["searchstring"].ToString());
                        break;
                    case "ispostcommentsclosed":
                        Posts = BlogServices.SearchForPagedPostsByParam(pageIndex, Int32.Parse(BgResources.Pager_PostPerPage), p => p.IsPostCommentsClosed, dir, Session["searchstring"].ToString());
                        break;
                    case "category.name":
                        Posts = BlogServices.SearchForPagedPostsByParam(pageIndex, Int32.Parse(BgResources.Pager_PostPerPage), p => p.Category.Name, dir, Session["searchstring"].ToString());
                        break;
                    case "user.username":
                        Posts = BlogServices.SearchForPagedPostsByParam(pageIndex, Int32.Parse(BgResources.Pager_PostPerPage), p => p.User.Username, dir, Session["searchstring"].ToString());
                        break;
                    case "visits":
                        Posts = BlogServices.SearchForPagedPostsByParam(pageIndex, Int32.Parse(BgResources.Pager_PostPerPage), p => p.Visits, dir, Session["searchstring"].ToString());
                        break;
                    default:
                        Posts = BlogServices.SearchForPagedPostsByParam(pageIndex, Int32.Parse(BgResources.Pager_PostPerPage), p => p.DateCreated, dir, Session["searchstring"].ToString());
                        break;
                }
            }
            // Get Paged number of Posts after do the search with the parameter (searchstring)
            ViewBag.TotalPosts = BlogServices.GetPagedNumber();
            return View(Posts);
        }