public SortProvidersViewModel(ProvidersSortState sortOrder) { SurnameAscSort = sortOrder == ProvidersSortState.SurnameAsc ? ProvidersSortState.SurnameDesc : ProvidersSortState.SurnameAsc; FirstnameAscSort = sortOrder == ProvidersSortState.FirstnameAsc ? ProvidersSortState.FirstnsmeDesc : ProvidersSortState.FirstnameAsc; AdressAscSort = sortOrder == ProvidersSortState.AdressAsc ? ProvidersSortState.AdressDesc : ProvidersSortState.AdressAsc; BirthdayAscSort = sortOrder == ProvidersSortState.BirthdayAsc ? ProvidersSortState.BirthdayDesc : ProvidersSortState.BirthdayAsc; Current = sortOrder; }
// GET: Providers public IActionResult Index(string surname, string firstname, string adress, string birthday, int page = 1, ProvidersSortState sortOrder = ProvidersSortState.SurnameAsc) { int pageSize = 10; IQueryable <Providers> source = _context.Providers; if (surname != null) { source = source.Where(x => x.Surname.Contains(surname)); } if (firstname != null) { source = source.Where(x => x.Firstname.Contains(firstname)); } if (adress != null) { source = source.Where(x => x.Adress.Contains(adress)); } if (birthday != null) { source = source.Where(x => x.Birthday == DateTime.Parse(birthday)); } switch (sortOrder) { case ProvidersSortState.SurnameAsc: source = source.OrderBy(x => x.Surname); break; case ProvidersSortState.SurnameDesc: source = source.OrderByDescending(x => x.Surname); break; case ProvidersSortState.FirstnameAsc: source = source.OrderBy(x => x.Firstname); break; case ProvidersSortState.FirstnsmeDesc: source = source.OrderByDescending(x => x.Firstname); break; case ProvidersSortState.AdressAsc: source = source.OrderBy(x => x.Adress); break; case ProvidersSortState.AdressDesc: source = source.OrderByDescending(x => x.Adress); break; case ProvidersSortState.BirthdayAsc: source = source.OrderBy(x => x.Birthday); break; case ProvidersSortState.BirthdayDesc: source = source.OrderByDescending(x => x.Birthday); break; default: source = source.OrderBy(x => x.Surname); break; } var count = source.Count(); var items = source.Skip((page - 1) * pageSize).Take(pageSize); PageViewModel pageView = new PageViewModel(count, page, pageSize); ProvidersViewModel ivm = new ProvidersViewModel { PageViewModel = pageView, SortViewModel = new SortProvidersViewModel(sortOrder), FilterViewModel = new FilterProvidersViewModel(surname, firstname, adress, birthday), Providers = items }; return(View(ivm)); }