示例#1
0
        protected override string RenderView()
        {
            var searchSettings = new SearchModuleSettings(ModuleId);

            return(MvcRenderingEngine.Render("Search", "Index",
                                             new { viewName = searchSettings.View, pageSize = searchSettings.PageSize }));
        }
示例#2
0
        public override void UpdateSettings()
        {
            var searchSettings = new SearchModuleSettings(ModuleId)
            {
                View = ViewComboBox.SelectedValue
            };
            int pageSize;

            if (int.TryParse(PageSizeTextBox.Text, out pageSize))
            {
                searchSettings.PageSize = pageSize;
            }
            searchSettings.ShowManufactures = ShowManufacturesCheckBox.Checked;
            searchSettings.ShowVendors      = ShowVendorsCheckBox.Checked;
        }
示例#3
0
        public override void LoadSettings()
        {
            if (!IsPostBack)
            {
                FillForm();

                var searchSettings = new SearchModuleSettings(ModuleId);

                ViewContentLabel.Text = LocalizeString("NoneSelectedText");
                if (!string.IsNullOrEmpty(searchSettings.View))
                {
                    ViewComboBox.SelectedValue = searchSettings.View;
                    ViewContentLabel.Text      = searchSettings.View;
                }
                PageSizeTextBox.Text = searchSettings.PageSize.ToString();

                ShowManufacturesCheckBox.Checked = searchSettings.ShowManufactures;
                ShowVendorsCheckBox.Checked      = searchSettings.ShowVendors;
            }
        }
        public ActionResult Index(string search, int pageSize = 9)
        {
            // Initial Setup
            PageDescription += " | " + search;
            ViewBag.Search   = search;

            var model = new SearchPageViewModel();

            if (!string.IsNullOrEmpty(search))
            {
                // Pager Vars
                var pageNumber     = GetPageNumber();
                var logSearchQuery = pageNumber == 1;

                // Do Search
                var manager  = new SearchManager(HccApp.CurrentRequestContext);
                var queryAdv = new ProductSearchQueryAdv();
                if (!string.IsNullOrEmpty(Request.Params["categories"]))
                {
                    queryAdv.Categories = Request.Params["categories"].Split(',').ToList();
                    logSearchQuery      = false;
                }
                if (!string.IsNullOrEmpty(Request.Params["types"]))
                {
                    queryAdv.Types = Request.Params["types"].Split(',').ToList();
                    logSearchQuery = false;
                }
                if (!string.IsNullOrEmpty(Request.Params["manufacturers"]))
                {
                    queryAdv.Manufactures = Request.Params["manufacturers"].Split(',').ToList();
                    logSearchQuery        = false;
                }
                if (!string.IsNullOrEmpty(Request.Params["vendors"]))
                {
                    queryAdv.Vendors = Request.Params["vendors"].Split(',').ToList();
                    logSearchQuery   = false;
                }

                var keys = Request.Params.AllKeys.
                           Where(k => k != null && k.StartsWith("prop")).
                           ToList();

                foreach (var key in keys)
                {
                    var propId    = int.Parse(key.Substring(4));
                    var propValue = Request.Params[key];
                    queryAdv.Properties.Add(propId, new[] { propValue });
                }
                if (keys.Count > 0)
                {
                    logSearchQuery = false;
                }

                if (!string.IsNullOrEmpty(Request.Params["minprice"]))
                {
                    queryAdv.MinPrice = decimal.Parse(Request.Params["minprice"], CultureInfo.InvariantCulture);
                    logSearchQuery    = false;
                }
                if (!string.IsNullOrEmpty(Request.Params["maxprice"]))
                {
                    queryAdv.MaxPrice = decimal.Parse(Request.Params["maxprice"], CultureInfo.InvariantCulture);
                    logSearchQuery    = false;
                }

                if (logSearchQuery && HttpContext.Items["HccSearchQueryLogged"] == null)
                {
                    HttpContext.Items["HccSearchQueryLogged"] = true;
                }
                else
                {
                    logSearchQuery = false;
                }

                var result = manager.DoProductSearch(HccApp.CurrentStore.Id,
                                                     search,
                                                     queryAdv,
                                                     pageNumber,
                                                     pageSize,
                                                     logSearchQuery);
                var products = HccApp.CatalogServices.Products.FindManyWithCache(result.Products);

                var searchSettings = new SearchModuleSettings(ModuleContext.ModuleId);

                model.ShowManufactures = searchSettings.ShowManufactures;
                model.ShowVendors      = searchSettings.ShowVendors;

                model.Categories   = result.Categories;
                model.Types        = result.Types;
                model.Manufactures = result.Manufacturers;
                model.Vendors      = result.Vendors;
                model.Properties   = result.Properties;
                model.MinPrice     = result.MinPrice;
                model.MaxPrice     = result.MaxPrice;

                model.SelectedCategories   = result.SelectedCategories;
                model.SelectedTypes        = result.SelectedTypes;
                model.SelectedManufactures = result.SelectedManufacturers;
                model.SelectedVendors      = result.SelectedVendors;
                model.SelectedProperties   = result.SelectedProperties;
                model.SelectedMinPrice     = result.SelectedMinPrice;
                model.SelectedMaxPrice     = result.SelectedMaxPrice;

                model.Products              = PrepProducts(products);
                model.PagerData.PageSize    = pageSize;
                model.PagerData.TotalItems  = result.TotalCount;
                model.PagerData.CurrentPage = pageNumber;
                model.PagerData.PageRange   = 20;

                var      currentParams = new List <string>();
                string[] parameters    =
                {
                    "search", "categories", "types", "manufacturers", "vendors", "minprice",
                    "maxprice"
                };
                var props = Request.QueryString.AllKeys.
                            Where(k => k != null && k.StartsWith("prop")).
                            ToList();
                currentParams.AddRange(parameters);
                currentParams.AddRange(props);
                foreach (var param in currentParams)
                {
                    if (!string.IsNullOrEmpty(Request.QueryString[param]))
                    {
                        model.CurrentRouteValues[param] = HttpUtility.UrlEncode(Request.QueryString[param]);
                    }
                }

                var routeValues = new RouteValueDictionary(model.CurrentRouteValues);
                model.PagerData.PagerUrlFormatFirst = Url.RouteHccUrl(HccRoute.Search, routeValues);
                routeValues.Add("p", "{0}");
                model.PagerData.PagerUrlFormat = Url.RouteHccUrl(HccRoute.Search, routeValues);
            }

            return(View(model));
        }