public ActionResult List() { ContactsService contactsService = new ContactsService(); ContactsListVM model = new ContactsListVM(); TryUpdateModel(model); List <Contact> contacts = contactsService.GetAll().Where(c => c.UserID == AuthenticationManager.LoggedUser.ID).ToList(); if (!String.IsNullOrEmpty(model.Search)) { model.Search = model.Search.Replace(" ", String.Empty); contacts = contacts.Where(c => (c.FirstName + c.LastName).ToLower().Contains(model.Search.ToLower())).ToList(); } switch (model.SortOrder) { case "lname_asc": contacts = contacts.OrderBy(c => c.LastName).ToList(); break; case "lname_desc": contacts = contacts.OrderByDescending(c => c.LastName).ToList(); break; case "fname_desc": contacts = contacts.OrderByDescending(c => c.FirstName).ToList(); break; case "fname_asc": default: contacts = contacts.OrderBy(c => c.FirstName).ToList(); break; } int pageSize = 3; if (model.PageSize != 0) { pageSize = model.PageSize; } int pageNumber = model.Page ?? 1; model.Contacts = contacts.ToPagedList(pageNumber, pageSize); return(View(model)); }
public ActionResult Index() { ContactsListVM model = new ContactsListVM(); TryUpdateModel(model); ContactRepository contactRepo = new ContactRepository(); User user = AuthenticationService.LoggedUser; Expression <Func <Contact, bool> > filter = null; if (!string.IsNullOrEmpty(model.SearchString)) // With Searching { string[] searchArray = model.SearchString.Split(new char[0], StringSplitOptions.RemoveEmptyEntries); filter = c => (c.UserID == user.ID) && (searchArray.Any(word => c.FirstName.Contains(word)) || searchArray.Any(word => c.LastName.Contains(word)) || searchArray.Any(word => c.Email.Contains(word))); } else // Without Searching { filter = c => c.UserID == user.ID; } model.Entities = contactRepo.GetAll(filter); // Sorting model.RouteDictionary = new RouteValueDictionary { { "SearchString", model.SearchString } }; if (model.SortOrder == null) { model.SortOrder = ContactSorting.FirstNameAsc; } switch (model.SortOrder) { case ContactSorting.FirstNameAsc: default: model.Entities = model.Entities.OrderBy(c => c.FirstName).ToList(); break; case ContactSorting.FirstNameDesc: model.Entities = model.Entities.OrderByDescending(c => c.FirstName).ToList(); break; case ContactSorting.LastNameAsc: model.Entities = model.Entities.OrderBy(c => c.LastName).ToList(); break; case ContactSorting.LastNameDesc: model.Entities = model.Entities.OrderByDescending(c => c.LastName).ToList(); break; case ContactSorting.EmailAsc: model.Entities = model.Entities.OrderBy(c => c.Email).ToList(); break; case ContactSorting.EmailDesc: model.Entities = model.Entities.OrderByDescending(c => c.Email).ToList(); break; } // Paging int pageSize = 2; int pageNumber = (model.Page ?? 1); model.PagedContacts = new PagedList <Contact>(model.Entities, pageNumber, pageSize); return(View(model)); }