Beispiel #1
0
        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));
        }