public ParentListViewModel GetParentList(SearchParentsModel searchModel, int page = 1)
        {
            int pageSize = 20;

            if (page < 1)
            {
                page = 1;
            }

            IEnumerable <Parent> records = db.Parents.ToList();

            // Remove any default information
            //searchModel.ParseRouteInfo();

            if (!String.IsNullOrEmpty(searchModel.Name))
            {
                string name = searchModel.Name.ToLower();
                records = records.SelectMany(x => x.Students).Where(y => y.Student.Matches(name)).Select(m => m.Parent);
            }

            if (!String.IsNullOrEmpty(searchModel.ParentName))
            {
                string parentName = searchModel.ParentName.ToLower();
                records = records.Where(x => x.Matches(parentName));
            }

            records = records.Where(x => !x.Terminated.HasValue);

            return(new ParentListViewModel
            {
                Parents = records
                          .OrderByDescending(o => o.Added)
                          .ThenBy(o => o.FullName)
                          .Skip((page - 1) * pageSize)
                          .Take(pageSize),
                SearchModel = searchModel,
                PagingInfo = new PagingInfo
                {
                    CurrentPage = page,
                    PageSize = pageSize,
                    TotalItems = records.Count()
                }
            });
        }
        public ActionResult Index(SearchParentsModel search, int page = 1)
        {
            // Return all Parents
            // If not a post-back (i.e. initial load) set the searchModel to session
            if (Request.Form.Count <= 0)
            {
                if (search.IsEmpty() && Session["SearchParentsModel"] != null)
                {
                    search = (SearchParentsModel)Session["SearchParentsModel"];
                }
            }

            var helper = new ParentHelper();
            var model = helper.GetParentList(search, search.ParsePage(page));

            Session["SearchParentsModel"] = search;
            
            return View(model);
        }