Beispiel #1
0
        public ActionResult Config(string pageName, string queryName, string queryId, [ModelBinder(typeof(BindingTypeAwareModelBinder))] object config)
        {
            var           manager    = new SavedTabQueryManager();
            ITabQuery     query      = null;
            SavedTabQuery savedQuery = null;

            if (!String.IsNullOrEmpty(queryId))
            {
                savedQuery = manager.Find(pageName, new Guid(queryId));
                query      = TabQueries.GetQuery(savedQuery.QueryName);
            }
            else
            {
                savedQuery = new SavedTabQuery(queryName);
                query      = TabQueries.GetQuery(queryName);
            }

            savedQuery.DisplayName = Request.Form["DisplayName"];

            if (query.ConfigType != null)
            {
                savedQuery.Config = config;
            }

            if (!String.IsNullOrEmpty(queryId))
            {
                manager.Update(pageName, savedQuery);
            }
            else
            {
                manager.Add(pageName, savedQuery);
            }

            return(Json(savedQuery));
        }
        public static TabQueryModel CreateTabQueryModel(this CommerceController controller, string pageName, ITabQuery defaultQuery, string defaultQueryDisplayName = "All")
        {
            var manager = new SavedTabQueryManager();

            var model = new TabQueryModel
            {
                PageName         = pageName,
                SavedQueries     = manager.FindAll(pageName).ToList(),
                AvailableQueries = TabQueries.GetQueries(controller.ControllerContext).ToList()
            };

            // Ensure default
            if (model.SavedQueries.Count == 0)
            {
                var savedQuery = SavedTabQuery.CreateFrom(defaultQuery, "All");
                manager.Add(model.PageName, savedQuery);
                model.SavedQueries.Add(savedQuery);
            }

            var queryId = controller.Request.QueryString["queryId"];

            if (String.IsNullOrEmpty(queryId))
            {
                model.CurrentQuery = model.SavedQueries.FirstOrDefault();
            }
            else
            {
                model.CurrentQuery = manager.Find(model.PageName, new Guid(queryId));
            }

            var query = model.AvailableQueries.Find(q => q.Name == model.CurrentQuery.QueryName);

            var search = controller.Request.QueryString["search"];
            var page   = 1;

            if (!String.IsNullOrEmpty(controller.Request.QueryString["page"]))
            {
                page = Convert.ToInt32(controller.Request.QueryString["page"]);
            }

            var pageSize = 50;

            if (!String.IsNullOrEmpty(controller.Request.QueryString["pageSize"]))
            {
                pageSize = Convert.ToInt32(controller.Request.QueryString["pageSize"]);
            }

            model.CurrentQueryResult = query.Execute(new QueryContext(controller.CurrentInstance, search, page - 1, pageSize, model.CurrentQuery.Config))
                                       .ToPagedList();

            return(model);
        }