public virtual ActionResult Edit(int id)
        {
            DBTerminal dbTerminal = _selectionRepository.GetObjectById(id);


            if (dbTerminal.IsDeleted)
            {
                return(RedirectToAction("Details", new { id = id }));
            }

            TerminalModel terminal = new TerminalModel()
            {
                Id                   = dbTerminal.Id,
                PhoneNumber          = dbTerminal.PhoneNumber,
                IsPublic             = dbTerminal.IsPublic,
                RegionId             = dbTerminal.RegionId,
                CorrectionFacilityId = dbTerminal.CorrectionFacilityId,
                Description          = dbTerminal.Description,
                IsActive             = dbTerminal.IsActive
            };

            ViewBag.Regions = RegionController.GetRegionList(null);
            ViewBag.CorrectionFacilities = CorrectionFacilityController.GetCorrectionFacilitiesByRegion(dbTerminal.RegionId, null);

            return(View(terminal));
        }
        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));
        }