Exemple #1
0
        public IActionResult Index(SortState sortOrder, string searchString)
        {
            var contactsDto = db.Contacts
                              .Select(c => c.ToDto())
                              .ToList()
                              .AsQueryable();

            ViewData["SearchString"]    = searchString;
            ViewData["NameSort"]        = sortOrder == SortState.NameAscending ? SortState.NameDescending : SortState.NameAscending;
            ViewData["LastNameSort"]    = sortOrder == SortState.LastNameAscending ? SortState.LastNameDescending : SortState.LastNameAscending;
            ViewData["PhoneNumberSort"] = sortOrder == SortState.PhoneNumberAscending ? SortState.PhoneNumberDescending : SortState.PhoneNumberAscending;

            contactsDto = sortOrder switch
            {
                SortState.NameDescending => contactsDto.OrderByDescending(c => c.Name),
                SortState.LastNameAscending => contactsDto.OrderBy(c => c.LastName),
                SortState.LastNameDescending => contactsDto.OrderByDescending(c => c.LastName),
                SortState.PhoneNumberAscending => contactsDto.OrderBy(c => c.PhoneNumber),
                SortState.PhoneNumberDescending => contactsDto.OrderByDescending(c => c.PhoneNumber),
                _ => contactsDto.OrderBy(c => c.Name),
            };

            if (searchString != null)
            {
                contactsDto = contactsDto
                              .Select(n => n)
                              .Where(c => (c.Name.Contains(searchString) || c.LastName.Contains(searchString) || c.PhoneNumber.Contains(searchString)));
            }

            return(View(contactsDto));
        }