public ActionResult Index(string sortOrder, string currentFilter, string searchString, int? page)
{
_viewMessageLogic.SetViewMessageIfExist();
var allStudents = _studentRepository.GetAllStudents();
ViewBag.CurrentSort = sortOrder;
ViewBag.NameSortParm = String.IsNullOrEmpty(sortOrder) ? "name_desc" : "";
ViewBag.DateSortParm = sortOrder == "Date" ? "date_desc" : "Date";
if (searchString != null)
{
page = 1;
}
else
{
searchString = currentFilter;
}
if (!String.IsNullOrEmpty(searchString))
{
allStudents = _studentRepository.Filter(x => x.FullName.Contains(searchString)).ToList();
}
var allStudentDisplaysModel = allStudents.Select(Mapper.Map<Student, DisplayStudentModel>).ToList();
ViewBag.CurrentFilter = searchString;
switch (sortOrder)
{
case "name_desc":
allStudentDisplaysModel = allStudentDisplaysModel.OrderByDescending(s => s.FullName).ToList();
break;
case "Date":
allStudentDisplaysModel = allStudentDisplaysModel.OrderBy(s => s.StartDate).ToList();
break;
case "date_desc":
allStudentDisplaysModel = allStudentDisplaysModel.OrderByDescending(s => s.StartDate).ToList();
break;
default: // Name ascending
allStudentDisplaysModel = allStudentDisplaysModel.OrderBy(s => s.FullName).ToList();
break;
}
const int pageSize = 10;
var pageNumber = (page ?? 1);
return View(allStudentDisplaysModel.ToPagedList(pageNumber, pageSize));
}