public ActionResult DisplayWorkshopEvents(string sortOrder, string currentFilter, string searchString, int?page) { var session = Session["LoginWorkshop"] as SessionModel; var viewModel = new List <DisplayEventModel>(); if (session != null) { using (var db = new MechAppProjectEntities()) { var workshopEvents = db.ServiceEvents.Where(x => x.WorkshopService.WorkshopId == session.WorkshopId).ToList(); workshopEvents.ForEach(x => { viewModel.Add(new DisplayEventModel() { StartDate = x.StartDate, EndDate = x.EndDate, WorkshopName = x.WorkshopService.Workshop.WorkshopName, Status = EventsHelper.ConvertEventStatus(x.OrderStatus), CustomerName = x.Customer.Name, StatusId = (OrderStatus)x.OrderStatus, ServiceEventId = x.ServiceEventId }); }); } } ViewBag.CurrentSort = sortOrder; ViewBag.NameSortParm = String.IsNullOrEmpty(sortOrder) ? "name_desc" : ""; if (searchString != null) { page = 1; } else { searchString = currentFilter; } ViewBag.CurrentFilter = searchString; var eventsView = from w in viewModel select w; if (!String.IsNullOrEmpty(searchString)) { eventsView = eventsView.Where(w => w.WorkshopName.Contains(searchString)); } switch (sortOrder) { case "name_desc": eventsView = eventsView.OrderByDescending(w => w.Status); break; default: // Name ascending eventsView = eventsView.OrderBy(w => w.Status); break; } int pageSize = 3; int pageNumber = (page ?? 1); return(View(eventsView.ToPagedList(pageNumber, pageSize))); }