private IQueryable <Patient> ApplyFilter(string search, PatientFilterColumns filterColumn, IQueryable <Patient> query) { search = search.Trim(); switch (filterColumn) { case PatientFilterColumns.LASTNAME: query = query.Where(x => x.LastName.StartsWith(search)); break; default: query = query.Where(x => x.SSN.Equals(search)); break; } return(query); }
public async Task <ActionResult> Index(string search, PatientFilterColumns column = PatientFilterColumns.SSN, int?page = null) { int pageSize = 25; int pageNumber = (page ?? 1); IQueryable <Patient> query = db.Patients; if (!string.IsNullOrWhiteSpace(search)) { query = ApplyFilter(search, column, query); } var patients = await query.OrderBy(patient => patient.LastName) .ThenBy(patient => patient.FirstName) .ToPagedListAsync(pageNumber, pageSize); var viewModel = new PatientListViewModel(patients, search, column); return(View(viewModel)); }
public PatientListViewModel(IPagedList <Patient> patients, string search, PatientFilterColumns column) { Patients = MapPatients(patients); Search = search; Column = column; }