public ViewResult List(FilterGridDTO values) { var gridBuilder = new UserGridBuilder(HttpContext.Session, values, nameof(AbsenceCoverageMS.Models.DomainModels.User.FirstName)); var options = new UserQueryOptions { Include = "Campus", OrderByDirection = gridBuilder.CurrentGrid.SortDirection, }; options.Search(gridBuilder); options.Filter(gridBuilder); options.Sort(gridBuilder); var model = new UserListViewModel { Grid = gridBuilder.CurrentGrid, Users = BuildQuery(options).ToList(), Campuses = data.Campuses.List() }; model.TotalPages = gridBuilder.GetTotalPages(model.Users.Count()); model.Users = model.Users.Skip((gridBuilder.CurrentGrid.PageNumber - 1) * gridBuilder.CurrentGrid.PageSize).Take(gridBuilder.CurrentGrid.PageSize); return(View(model)); }
public void Filter(UserGridBuilder gridBuilder) { //Filter by Campus if (gridBuilder.CurrentGrid.Campus != "all") { Where = u => u.CampusId == gridBuilder.CurrentGrid.Campus; } }
public void Search(UserGridBuilder gridBuilder) { if (gridBuilder.CurrentGrid.Search != null) { string searchTerm = gridBuilder.CurrentGrid.Search.ToLower(); Where = u => u.FirstName.ToLower().Contains(searchTerm) || u.LastName.ToLower().Contains(searchTerm) || u.UserName.ToLower().Contains(searchTerm); } }
public RedirectToActionResult Search(string[] filters, string searchTerm, bool clear = false) { //Initialize with the GET constructor (Desirializes route dictionary to use and make changes.) var gridBuilder = new UserGridBuilder(HttpContext.Session); if (clear) { gridBuilder.ClearSearchOptions(); } else { //Set new grid values and serialize. gridBuilder.SetSearchOptions(filters, searchTerm); gridBuilder.SerializeRoutes(); } //Redirect to the List Action Method with updated grid. return(RedirectToAction("List", gridBuilder.CurrentGrid)); }
public void Sort(UserGridBuilder gridBuilder) { switch (gridBuilder.CurrentGrid.SortBy) { case nameof(User.FirstName): OrderBy = u => u.FirstName; break; case nameof(User.UserName): OrderBy = u => u.UserName; break; case nameof(User.Campus.Name): OrderBy = u => u.Campus.Name; break; default: OrderBy = u => u.FirstName; break; } }