// GET: Search public ActionResult Search(SearchRequestModel searchCriteria) { var response = _productApi.GetKeywordRedirect(); var obj = response.Result.Where(x => x.Keywords.Trim().Equals(searchCriteria.FreeText)).FirstOrDefault(); if (obj != null) { return(Redirect(obj.Url)); } foreach (var item in response.Result) { if (item.Keywords.Contains(',') && item.Keywords.Trim().Split(',').Where(s => s.Equals(searchCriteria.FreeText)).FirstOrDefault() != null) { return(Redirect(item.Url)); } } searchCriteria.AllowFacet = true; searchCriteria.AllowFacet = Request.QueryString[Constants.SEARCH_SURVEY_QUERYSTRING] == null?true:false; if (Request.QueryString[Constants.SEARCH_FILTER_QUERYSTRING] != null) { searchCriteria.Filters = new List <SearchFilter>(); var qryfilters = Request.QueryString[Constants.SEARCH_FILTER_QUERYSTRING]; foreach (var qfilter in qryfilters.Split(';')) { foreach (var val in qfilter.Split(':')[1].Split(',')) { var filter = new SearchFilter { Key = Constants.ATTRIBUTE_FILTER_PREFIX + qfilter.Split(':')[0], Value = val }; searchCriteria.Filters.Add(filter); } } } var searchRequestModel = sanitizeInput(searchCriteria); var result = SearchHelper.GetPaginatedProducts(searchRequestModel); if (result.Results != null && result.Results.Count == 1) { if (!String.IsNullOrEmpty(result.Results[0].Slug)) { return(RedirectToAction("ProductDetail", "Product", new { name = result.Results[0].Slug.Split('/')[1] })); } } //TODO: Sort by shoudl be part of the search result itself and NOT a separate call //var sortBy = _productApi.GetSortBy(); searchCriteria.ResultCount = (result.Results == null) ? 0 : result.Results.Count; SetDataLayerVariables(searchCriteria, WebhookEventTypes.FreeText); return(View(CustomViews.SEARCH, result)); }