public virtual ActionResult List(int?page, GridSortOptions sortOptions, string number, int?regionId, int?correctionFacilityId, string terminalAddress)
        {
            // реализация поиска и фильтрации
            //http://www.codeproject.com/KB/aspnet/Grid_Paging_In_MVC3.aspx

            var dbFacilities = _selectionRepository.GetAllObjects().Where(terminal => terminal.IsDeleted == false);

            if (!UserHelper.Instance.IsAdministrator && !UserHelper.Instance.IsManager && !UserHelper.Instance.IsCallCenterUser) //простым смертным показывать только активные терминалы
            {
                dbFacilities = dbFacilities.Where(terminal => terminal.IsActive == true);
            }
            var facilities = dbFacilities.Select(dbTerminal => new TerminalListModel
            {
                Id                     = dbTerminal.Id,
                PhoneNumber            = dbTerminal.PhoneNumber,
                IsPublic               = dbTerminal.IsPublic,
                CorrectionFacilityId   = dbTerminal.CorrectionFacilityId,
                CorrectionFacilityName = dbTerminal.CorrectionFacility.Name,
                InstallationAddress    = dbTerminal.CorrectionFacility.Address,
                RegionId               = dbTerminal.RegionId,
                IsActive               = dbTerminal.IsActive
            });

            var pagedViewModel = new PagedViewModel <TerminalListModel>
            {
                ViewData          = ViewData,
                Query             = facilities,
                GridSortOptions   = sortOptions,
                DefaultSortColumn = "PhoneNumber",
                Page     = page,
                PageSize = 10
            }
            .AddFilter("number", number, t => t.PhoneNumber.Contains(number))
            .AddFilter("RegionId", regionId, t => t.RegionId == regionId, RegionController.GetDBRegionList(null), "Id", "Name")
            .AddFilter("CorrectionFacilityId", correctionFacilityId, t => t.CorrectionFacilityId == correctionFacilityId, CorrectionFacilityController.GetDbCorrectionFacilityList(-1, null), "Id", "Name")
            .AddFilter("terminalAddress", terminalAddress, t => t.InstallationAddress.ToLower().Contains(terminalAddress.ToLower()))
            .Setup();

            return(View(pagedViewModel));
        }