private ActionResult DoSearch(int?page = null)
        {
            string uri = AdvisorHelper.GetValidAdvisorUri();

            if (new AdvisorDetailManager().ShouldRedirectToMyAdvisor() && uri.IsNotNullOrEmpty() && Request.Url != null)
            {
                return(Redirect(uri + Request.Url.Query));
            }

            if (IsPhone)
            {
                // Mobile
                var searchManager = new SearchManager();
                var options       = new SearchOptions {
                    SearchType = SearchTypes.Advisor.ToString()
                };
                var results = searchManager.GetFacetResultsForMobile(options);
                ViewBag.CurrentPage = page ?? 1;
                return(View("Search", results));
            }
            else
            {
                // Desktop
                SearchResults results;
                if (page == null)
                {
                    results = SearchResults();
                    return(View("Search", results));
                }
                results = SearchResults(page.Value);
                return(results.Advisor.Results.IsNullOrEmpty() ? PageNotFoundActionResult() : View("Search", results));
            }
        }
        //  [AjaxPost]
        public ActionResult ProductDetailVirtuosoAdvisorsPartial(RecommendedAdvisorFactors factors)
        {
            ICollection <AdvisorCardInfo> advisorCards = null;

            if (factors != null)
            {
                // here, we've already done the rules about 'does the user get to see the module'
                // this is response to click the button
                var recommendedAdvisors = AdvisorHelper.RetrieveRecommendedAdvisors(factors);

                // TODO: make the view model the RecommendedAdvisorResults or new VM (TBD)
                if (recommendedAdvisors.NumberDestinationSpecialistsForCountry > 1 && factors.ProductLocationCountry.IsNotNullOrEmpty())
                {
                    ViewBag.ProductLocationCountry = factors.ProductLocationCountry.Split('|').First();
                }
                else if (recommendedAdvisors.NumberAdvisorsMatchingInterest > 1)
                {
                    ViewBag.ProductInterestType = factors.InterestType;
                }

                advisorCards = recommendedAdvisors.AdvisorCards;
            }

            // If this is an advisor email marketing cobranded page, don't show the "Find different advisor link"
            var userInfo = FederatedLoginClient.User;

            ViewBag.ShowFindDifferentAdvisorLink = !(userInfo.IsMarketingProgram && userInfo.CobrandedAdvisorInfo.AdvisorId > 0);
            return(PartialView("Partial/_ProductDetail_RecommendedAdvisors", advisorCards));
        }