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