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); }
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); }