internal static List <AutocompleteVm> MapToAutocompleteVmList(this IEnumerable <SearchCriteria> criterias, SearchType searchType, string lookupString)
        {
            List <AutocompleteVm> autocompleteVms = new List <AutocompleteVm>();

            foreach (SearchCriteria criteria in criterias)
            {
                AutocompleteVm autocompleteVm = new AutocompleteVm();
                string         lookupLocation = ClientViewModelsProvider.GetLookupLocation(criteria);
                if (lookupString.IsNullOrEmpty() || !lookupLocation.StartsWith(lookupString, StringComparison.InvariantCultureIgnoreCase))
                {
                    autocompleteVm.Start = lookupLocation;
                }
                else
                {
                    autocompleteVm.Start = new string(lookupLocation.Take <char>(lookupString.Count <char>()).ToArray <char>());
                    autocompleteVm.End   = new string(lookupLocation.Skip <char>(lookupString.Count <char>()).ToArray <char>());
                }
                if (string.IsNullOrEmpty(autocompleteVm.LookupLocation))
                {
                    continue;
                }
                autocompleteVm.Url = MslcUrlBuilder.SearchUrl(criteria, searchType);
                SearchDepth depth = criteria.Depth;
                switch (depth)
                {
                case SearchDepth.State:
                {
                    autocompleteVm.Template = "State";
                    break;
                }

                case SearchDepth.City:
                {
                    autocompleteVm.Template = "City";
                    break;
                }

                case SearchDepth.Zip:
                {
                    autocompleteVm.Template = "Zip";
                    break;
                }

                default:
                {
                    depth = SearchDepth.Invalid;
                    break;
                }
                }
                if (depth == SearchDepth.Invalid)
                {
                    continue;
                }
                autocompleteVms.Add(autocompleteVm);
            }
            return(autocompleteVms);
        }
Esempio n. 2
0
        private static UrlProcessingResult CheckForOldUrl(string url, out string newUrl)
        {
            newUrl = null;
            Match match = OldDetails.Match(url);

            if (match.Success)
            {
                if (TryParseToPropertyType(match.Groups["searchType"].Value, out var type))
                {
                    if (type == SearchType.ProductsAndServices)
                    {
                        ServiceProviderShortVm serviceProviderShortVm = new ServiceProviderShortVm();
                        serviceProviderShortVm.Id                = Convert.ToInt64(match.Groups["listingId"].Value);
                        serviceProviderShortVm.Name              = match.Groups["listingName"].Value;
                        serviceProviderShortVm.Address           = new AddressVm();
                        serviceProviderShortVm.Address.StateCode = match.Groups["stateCode"].Value;
                        serviceProviderShortVm.Address.City      = match.Groups["city"].Value;
                        newUrl = MslcUrlBuilder.DetailsUrl(serviceProviderShortVm);
                    }
                    else
                    {
                        CommunityShortVm communityShortVm = new CommunityShortVm();
                        communityShortVm.Id                = Convert.ToInt64(match.Groups["listingId"].Value);
                        communityShortVm.Name              = match.Groups["listingName"].Value;
                        communityShortVm.Address           = new AddressVm();
                        communityShortVm.Address.StateCode = match.Groups["stateCode"].Value;
                        communityShortVm.Address.City      = match.Groups["city"].Value;
                        newUrl = MslcUrlBuilder.DetailsUrl(communityShortVm, type);
                    }
                    if (!newUrl.IsNullOrEmpty())
                    {
                        return(UrlProcessingResult.RedirectPermanent);
                    }
                    return(UrlProcessingResult.NotFound);
                }
                return(UrlProcessingResult.NotFound);
            }
            Match match2 = OldSearch.Match(url);

            if (match2.Success)
            {
                if (TryParseToPropertyType(match2.Groups["searchType"].Value, out var type2))
                {
                    SearchCriteria criteria = new SearchCriteria();
                    criteria.StateCode(match2.Groups["stateCode"].Value);
                    criteria.City(match2.Groups["city"].Value);
                    newUrl = MslcUrlBuilder.SearchUrl(criteria, type2);
                    if (!newUrl.IsNullOrEmpty())
                    {
                        return(UrlProcessingResult.RedirectPermanent);
                    }
                    return(UrlProcessingResult.NotFound);
                }
                return(UrlProcessingResult.NotFound);
            }
            return(UrlProcessingResult.Continue);
        }
        private static void PopulateFeaturedServices(this SearchWithServicesVm searchVm, long?communityId = null, long?serviceId = null)
        {
            FeaturedServiceProviderSearchModel searchModel = searchVm.ToFeaturedServiceProviderSearchModel(communityId, serviceId);

            searchModel = SearchBc.Instance.SearchFeaturedServiceProviders(searchModel);
            searchVm.FeaturedServices                  = new FeaturedServicesVm();
            searchVm.FeaturedServices.AreaName         = searchVm.SearchBar.LookupLocation;
            searchVm.FeaturedServices.Items            = searchModel.Result.MapToServiceProviderShortVmList();
            searchVm.FeaturedServices.AreaServicesLink = MslcUrlBuilder.SearchUrl(searchVm.Criteria, SearchType.ProductsAndServices);
        }
        internal static List <LinkVm> MapToCitiesLinks(this IEnumerable <CityListingsInfo> cities, SearchType searchType, bool addCounting)
        {
            string str = (addCounting ? "{0}, {1} ({2})" : "{0}, {1}");

            return(cities.Select <CityListingsInfo, LinkVm>((CityListingsInfo cityInfo) => {
                LinkVm linkVm = new LinkVm();
                int listingsCount = SearchExtentions.GetListingsCount(cityInfo, searchType);
                linkVm.Href = MslcUrlBuilder.SearchUrl(cityInfo.SearchCriteria, searchType);
                linkVm.InnerText = string.Format(str, cityInfo.SearchCriteria.City(), cityInfo.SearchCriteria.StateCode(), listingsCount);
                return linkVm;
            }).ToList <LinkVm>());
        }
        internal static CrosslinksVm MapToCrosslinksVm(this NearbySearchResult searchResult, ISearchCriteria sourceCriteria)
        {
            CrosslinksVm crosslinksVm = new CrosslinksVm();

            foreach (SearchCriteria nearbyCity in searchResult.NearbyCities)
            {
                if (!nearbyCity.MapToSearchCriteriaVm().Validate())
                {
                    continue;
                }
                LinkVm linkVm = new LinkVm()
                {
                    InnerText = ClientViewModelsProvider.GetLookupLocation(nearbyCity),
                    Href      = MslcUrlBuilder.SearchUrl(nearbyCity, sourceCriteria.SearchType())
                };
                crosslinksVm.Cities.Add(linkVm);
            }
            foreach (ListingType availableListingType in searchResult.AvailableListingTypes)
            {
                LinkVm linkVm1 = new LinkVm()
                {
                    InnerText = availableListingType.GetEnumLocalizedValue <ListingType>(),
                    Href      = MslcUrlBuilder.SearchUrl(sourceCriteria, availableListingType.ToSearchType())
                };
                crosslinksVm.Categories.Add(linkVm1);
            }
            if (searchResult.IsServiceProvidersAvailable)
            {
                LinkVm linkVm2 = new LinkVm()
                {
                    InnerText = "Products & Services",
                    Href      = MslcUrlBuilder.SearchUrl(sourceCriteria, SearchType.ProductsAndServices)
                };
                crosslinksVm.Categories.Add(linkVm2);
            }
            return(crosslinksVm);
        }
        private static List <LinkVm> GetBreadcrumbs(SearchVm searchVm)
        {
            List <LinkVm> list = new List <LinkVm>();

            list.Add(new LinkVm("Home", MslcUrlBuilder.BaseUrl));
            if (searchVm.PageType.IsStaticPage())
            {
                if (searchVm.Seo != null)
                {
                    list.Add(new LinkVm(searchVm.Seo.Header, searchVm.Seo.CanonicalUrl));
                }
                return(list);
            }
            if (searchVm.Criteria.Validate())
            {
                SearchCriteriaVm criteria = new SearchCriteriaVm();
                criteria.SearchType(searchVm.Criteria.SearchType());
                list.Add(new LinkVm(criteria.SearchType().GetEnumLocalizedValue(), MslcUrlBuilder.SearchUrl(criteria, criteria.SearchType())));
                if (!searchVm.Criteria.StateCode().IsNullOrEmpty())
                {
                    criteria.StateCode(searchVm.Criteria.StateCode());
                    list.Add(new LinkVm(LocationBc.Instance.GetStateName(criteria.StateCode()), MslcUrlBuilder.SearchUrl(criteria, criteria.SearchType())));
                }
                if (!searchVm.Criteria.City().IsNullOrEmpty())
                {
                    criteria.City(searchVm.Criteria.City());
                    list.Add(new LinkVm(criteria.City(), MslcUrlBuilder.SearchUrl(criteria, criteria.SearchType())));
                }
                else if (!searchVm.Criteria.Zip().IsNullOrEmpty())
                {
                    criteria.Zip(searchVm.Criteria.Zip());
                    list.Add(new LinkVm(criteria.Zip(), MslcUrlBuilder.SearchUrl(criteria, criteria.SearchType())));
                }
            }
            return(list);
        }
        private static SearchBarVm FillSearchTypeList(SearchBarVm searchBar, SearchVm searchVm)
        {
            List <SearchType> list       = ConverterHelper.EnumToList <SearchType>();
            SearchType        searchType = searchVm.Criteria.SearchType();

            searchBar.SearchTypeList = new List <SearchBarSelectListItem>();
            NearbySearchResult nearbySearchResult = GetNearbySearchResult(searchVm);

            if (nearbySearchResult != null)
            {
                searchBar.Crosslinks = nearbySearchResult.MapToCrosslinksVm(searchVm.Criteria);
            }
            foreach (SearchType item in list)
            {
                SearchBarSelectListItem searchBarSelectListItem = new SearchBarSelectListItem();
                searchBarSelectListItem.Text = item.GetEnumLocalizedValue();
                int num = (int)item;
                searchBarSelectListItem.Value    = num.ToString(CultureInfo.InvariantCulture);
                searchBarSelectListItem.Selected = item == searchType;
                ListingType type;
                if (nearbySearchResult == null)
                {
                    searchBarSelectListItem.UrlValue = MslcUrlBuilder.SearchUrl(searchVm.Criteria, item);
                }
                else if (item.TryToListingType(out type))
                {
                    searchBarSelectListItem.UrlValue = MslcUrlBuilder.SearchUrl(nearbySearchResult.AvailableListingTypes.Contains(type) ? searchVm.Criteria : searchVm.Criteria.CloneLowerDepth(), item);
                }
                else
                {
                    searchBarSelectListItem.UrlValue = MslcUrlBuilder.SearchUrl(nearbySearchResult.IsServiceProvidersAvailable ? searchVm.Criteria : searchVm.Criteria.CloneLowerDepth(), item);
                }
                searchBar.SearchTypeList.Add(searchBarSelectListItem);
            }
            return(searchBar);
        }
        internal static LookupLocationValidationVm MapToLookupLocationValidationVm(this LookupLocationValidationResult validationResult, SearchType searchType)
        {
            LookupLocationValidationVm lookupLocationValidationVm = new LookupLocationValidationVm();

            if (validationResult.IsValid && validationResult.Criteria.Depth == SearchDepth.Zip)
            {
                SearchCriteria searchCriterium = new SearchCriteria();
                searchCriterium.CountryCode(validationResult.Criteria.CountryCode());
                searchCriterium.StateCode(validationResult.Criteria.StateCode());
                if (!validationResult.Criteria.City().IsNullOrEmpty())
                {
                    searchCriterium.City(validationResult.Criteria.City());
                }
                validationResult.Criteria = searchCriterium;
            }
            lookupLocationValidationVm.IsValid   = validationResult.IsValid;
            lookupLocationValidationVm.Criteria  = (lookupLocationValidationVm.IsValid ? validationResult.Criteria.MapToSearchCriteriaVm(searchType) : new SearchCriteriaVm());
            lookupLocationValidationVm.Variants  = (lookupLocationValidationVm.IsValid ? new List <AutocompleteVm>() : validationResult.Variants.MapToAutocompleteVmList(searchType, string.Empty));
            lookupLocationValidationVm.SearchUrl = (lookupLocationValidationVm.IsValid ? MslcUrlBuilder.SearchUrl(validationResult.Criteria, searchType) : string.Empty);
            return(lookupLocationValidationVm);
        }