// GET: Meetings public async Task <IActionResult> Index(int?id, int?SpeakerID) { var viewModel = new MeetingIndexData(); viewModel.Meetings = await _context.Meeting .Include(i => i.Topic) .Include(i => i.SpeechDate) .AsNoTracking() .OrderBy(i => i.SpeechDate) .ToListAsync(); return(View(viewModel)); }
// GET: Meetings public async Task <IActionResult> Index(string sortOrder, string currentFilter, string searchString, int?pageNumber, int?id) { ViewData["CurrentSort"] = sortOrder; if (String.IsNullOrEmpty(sortOrder)) { sortOrder = "date_desc"; } ViewData["DateSortParm"] = sortOrder == "Date" ? "date_desc" : "Date"; ViewData["NameSortParm"] = sortOrder == "Name" ? "name_desc" : "Name"; if (searchString != null) { pageNumber = 1; } else { searchString = currentFilter; } ViewData["CurrentFilter"] = searchString; var meetings = from s in _context.Meetings select s; if (!String.IsNullOrEmpty(searchString)) { meetings = meetings.Where(s => s.Conducting.Contains(searchString) || s.Invocation.Contains(searchString) || s.OpeningSong.Contains(searchString) || s.IntermediateSong.Contains(searchString) || s.ClosingSong.Contains(searchString) || s.Benediction.Contains(searchString)); } switch (sortOrder) { case "date_desc": meetings = meetings.OrderByDescending(s => s.MeetingDate); break; case "Name": meetings = meetings.OrderBy(s => s.Conducting); break; case "name_desc": meetings = meetings.OrderByDescending(s => s.Conducting); break; default: meetings = meetings.OrderBy(s => s.MeetingDate); break; } int pageSize = 3; var viewModel = new MeetingIndexData(); viewModel.Meetings = await PaginatedList <Meeting> .CreateAsync(meetings .Include(i => i.Speakers).AsNoTracking(), pageNumber ?? 1, pageSize); if (id != null) { ViewData["MeetingID"] = id.Value; Meeting meeting = viewModel.Meetings.Where(i => i.ID == id.Value).Single(); viewModel.Speakers = meeting.Speakers; } return(View(viewModel)); }