public virtual ActionResult _Index(Func <IQueryable, IQueryable> filter)
        {
            var page     = int.Parse(RequestManager.QueryStringDictionary["Page"].ToString());
            var pageSize = int.Parse(RequestManager.QueryStringDictionary["PageSize"].ToString());
            var orderBy  = RequestManager.QueryStringDictionary["OrderBy"].ToString();

            var viewModel = new DynamicIndexViewModel(DynamicEntitySearcher.DynamicEntityMetadata, RequestManager.QueryStringDictionary);

            var entityType = DynamicEntitySearcher.DynamicEntityMetadata.EntityMetadata.EntityType;
            var filters    = viewModel.GetDynamicFilters().Select(x => (Func <IQueryable, IQueryable>)x.Filter).ToList();

            if (filter != null)
            {
                filters.Add(filter);
            }
            var models = DynamicRepository.GetItems(entityType, filters, page, pageSize, orderBy, DynamicEntitySearcher.DynamicEntityMetadata.GetListIncludes().ToArray());

            viewModel             = new DynamicIndexViewModel(DynamicEntitySearcher.DynamicEntityMetadata, RequestManager.QueryStringDictionary, models);
            viewModel.RecordCount = DynamicRepository.GetRecordCount(DynamicEntitySearcher.DynamicEntityMetadata.EntityMetadata.EntityType, filters);

            var routeValueDictionary = viewModel.RouteValueDictionary.Clone();

            routeValueDictionary.Remove("ReturnUrl");
            viewModel.RouteValueDictionary["ReturnUrl"] = ReturnUrlCalculator.GetReturnUrl("Index", viewModel.DynamicEntityMetadata.EntityMetadata.TypeName, routeValueDictionary);

            return(ControllerManager.PartialView("_DynamicIndex", viewModel));
        }
 public DynamicControllerManager(HttpRequestBase request, ControllerManager controllerManager, IDynamicRepository dynamicRepository, UrlHelper urlHelper)
 {
     RequestManager = new RequestManager(request);
     DynamicEntitySearcher = new DynamicEntitySearcher(RequestManager);
     RequestManager.QueryStringDictionary = RequestManager.QueryStringDictionary.RouteValueDictionaryTypeCorrection(DynamicEntitySearcher.DynamicEntityMetadata);
     ControllerManager = controllerManager;
     DynamicRepository = dynamicRepository;
     UrlManager = new UrlManager(urlHelper);
     ReturnUrlCalculator = new ReturnUrlCalculator(UrlManager);
 }
 public DynamicControllerManager(HttpRequestBase request, ControllerManager controllerManager, IDynamicRepository dynamicRepository, UrlHelper urlHelper)
 {
     RequestManager        = new RequestManager(request);
     DynamicEntitySearcher = new DynamicEntitySearcher(RequestManager);
     RequestManager.QueryStringDictionary = RequestManager.QueryStringDictionary.RouteValueDictionaryTypeCorrection(DynamicEntitySearcher.DynamicEntityMetadata);
     ControllerManager   = controllerManager;
     DynamicRepository   = dynamicRepository;
     UrlManager          = new UrlManager(urlHelper);
     ReturnUrlCalculator = new ReturnUrlCalculator(UrlManager);
 }