public static ServiceProvidersSearchVm GetServiceProvidersSearchVm(ServiceProvidersSearchVm searchVm)
        {
            if (!ValidatePageNumber(searchVm.PageNumber))
            {
                return(null);
            }
            searchVm.ValidationResult = GetLookupLocationValidationVm(searchVm.SearchBar);
            if (!searchVm.ValidationResult.IsValid)
            {
                return(searchVm);
            }
            searchVm.Criteria  = searchVm.ValidationResult.Criteria;
            searchVm.SearchBar = GetSearchBarVm(searchVm);
            ServiceProviderSearchModel searchModel = searchVm.ToServiceProviderSearchModel();

            searchModel         = SearchBc.Instance.SearchServiceProviders(searchModel);
            searchVm.PageSize   = searchModel.PageSize;
            searchVm.TotalCount = searchModel.Result.TotalCount;
            searchVm.Paging     = searchVm.MapToPagingVm();
            searchVm.Refine     = searchVm.MapToServiceProviderRefineVm();
            searchVm.Result     = searchModel.Result.Results.MapToServiceProviderBlockVmList();
            PopulateFeaturedServices(searchVm);
            searchVm.Breadcrumbs       = GetBreadcrumbs(searchVm);
            searchVm.LeadForm          = GetLeadFormVm(searchVm);
            searchVm.DisplayProperties = new SearchDisplayProperties();
            searchVm.Seo = SeoHelper.GetSeo(searchVm);
            return(searchVm);
        }
        private static NearbySearchResult GetNearbySearchResult(SearchVm searchVm)
        {
            NearbySearchResult result = null;

            if (searchVm.PageType.ToSearchType() != SearchType.ProductsAndServices)
            {
                CommunitiesSearchVm communitiesSearchVm = searchVm as CommunitiesSearchVm;
                if (communitiesSearchVm != null)
                {
                    CommunityNearbySearchModel searchModel = communitiesSearchVm.ToCommunityNearbySearchModel();
                    searchModel = SearchBc.Instance.SearchNearbyCommunities(searchModel);
                    result      = searchModel.Result;
                }
            }
            else
            {
                ServiceProvidersSearchVm serviceProvidersSearchVm = searchVm as ServiceProvidersSearchVm;
                if (serviceProvidersSearchVm != null)
                {
                    NearbySearchModel searchModel2 = serviceProvidersSearchVm.ToNearbySearchModel();
                    searchModel2 = SearchBc.Instance.SearchNearbyServiceProviders(searchModel2);
                    result       = searchModel2.Result;
                }
            }
            return(result);
        }
Пример #3
0
        public static SeoVm GetSeo(ServiceProvidersSearchVm result)
        {
            SeoVm seoVm = new SeoVm()
            {
                PageType     = result.PageType,
                CanonicalUrl = MslcUrlBuilder.PagingUrl(result, result.PageNumber),
                LinkPrev     = SeoHelper.FormPageLink <ServiceProviderBlockVm, ServiceProviderSortType>(result, PageDirection.Previous),
                LinkNext     = SeoHelper.FormPageLink <ServiceProviderBlockVm, ServiceProviderSortType>(result, PageDirection.Next),
                MarketCopy   = SeoBc.Instance.GetServiceProvidersMarketCopy(result.Criteria.ToSearchCriteria())
            };
            PageType pageType = seoVm.PageType;

            if (pageType == PageType.ServiceProvidersByState)
            {
                seoVm.Title       = Title.SearchServicesByState;
                seoVm.Description = Description.SearchServicesByState;
                seoVm.Header      = Header.SearchServicesByState;
            }
            else if (pageType == PageType.ServiceProvidersByCity)
            {
                seoVm.Title       = Title.SearchServicesByCity;
                seoVm.Description = Description.SearchServicesByCity;
                seoVm.Header      = Header.SearchServicesByCity;
            }
            seoVm.Title       = seoVm.Title.Replace <ServiceProviderBlockVm, ServiceProviderSortType>(result);
            seoVm.Description = seoVm.Description.Replace <ServiceProviderBlockVm, ServiceProviderSortType>(result);
            seoVm.Header      = seoVm.Header.Replace <ServiceProviderBlockVm, ServiceProviderSortType>(result);
            seoVm.MarketCopy  = seoVm.MarketCopy.Replace <ServiceProviderBlockVm, ServiceProviderSortType>(result);
            return(seoVm);
        }
 private void BindListingsSearchModel(ServiceProvidersSearchVm model, ControllerContext controllerContext, PropertyDescriptor propertyDescriptor)
 {
     if (string.Equals(propertyDescriptor.Name, "ServiceCategories"))
     {
         string text = controllerContext.HttpContext.Request["service-categories"] ?? controllerContext.HttpContext.Request["ServiceCategories"];
         model.ServiceCategories = new List <int>();
         if (!string.IsNullOrWhiteSpace(text))
         {
             model.ServiceCategories = (from pair in text.Split('-', ',').Select(delegate(string str)
             {
                 int result;
                 bool success = int.TryParse(str, out result);
                 return(new
                 {
                     value = result,
                     success = success
                 });
             })
                                        where pair.success
                                        select pair.value).Distinct().ToList();
             return;
         }
     }
     if (string.Equals(propertyDescriptor.Name, "SortType"))
     {
         string sortType = controllerContext.HttpContext.Request["sort-by"] ?? controllerContext.HttpContext.Request["SortType"];
         model.SortType = sortType.FromServiceProviderSortTypeUrlStr();
     }
 }
 internal static NearbySearchModel ToNearbySearchModel(this ServiceProvidersSearchVm searchVm)
 {
     return(new NearbySearchModel()
     {
         Criteria = searchVm.Criteria.ToSearchCriteria(),
         MaxCount = SearchExtentions.Config.NearbyCitiesMaxCount
     });
 }
Пример #6
0
 public static string PagingUrl(ServiceProvidersSearchVm model, int pageNumber)
 {
     return(model.PageType.FluentUrl().State(model.Criteria.StateCode()).Zip(model.Criteria.Zip())
            .City(model.Criteria.City())
            .Refined(RefinedParameters(model))
            .WithPaging(pageNumber)
            .Url());
 }
        internal static ServiceProviderRefineVm MapToServiceProviderRefineVm(this ServiceProvidersSearchVm searchVm)
        {
            ServiceProviderRefineVm            serviceProviderRefineVm         = new ServiceProviderRefineVm();
            List <KeyValuePair <int, string> > shcCategoriesForServiceProvider = ItemTypeBc.Instance.GetShcCategoriesForServiceProvider();

            serviceProviderRefineVm.ServiceCategories = shcCategoriesForServiceProvider.MapToSelectListItemList(searchVm.ServiceCategories);
            serviceProviderRefineVm.SortTypes         = ConverterHelper.EnumToKoSelectListItems <ServiceProviderSortType>(searchVm.SortType);
            return(serviceProviderRefineVm);
        }
        public static LeadFormVm GetLeadFormVm(ServiceProvidersSearchVm vm)
        {
            LeadFormVm leadFormVm = GetLeadFormVm();

            leadFormVm.Message = vm.GetLeadFormMessage();
            leadFormVm.Brand   = vm.PageType.ToSearchType().MapToBrandType();
            leadFormVm.Inquiry = InquiryType.ServiceProvider;
            leadFormVm.DisplayProperties.MoveInDate = false;
            return(leadFormVm);
        }
Пример #9
0
        internal static PagingVm MapToPagingVm(this ServiceProvidersSearchVm searchVm)
        {
            PagingVm pagingVm = MapToCommonPagingVm(searchVm);

            foreach (PageLinkVm page in pagingVm.Pages)
            {
                page.Href = MslcUrlBuilder.PagingUrl(searchVm, page.PageNumber);
            }
            return(pagingVm);
        }
        protected override void BindProperty(ControllerContext controllerContext, ModelBindingContext bindingContext, PropertyDescriptor propertyDescriptor)
        {
            ServiceProvidersSearchVm serviceProvidersSearchVm = bindingContext.Model as ServiceProvidersSearchVm;

            base.BindProperty(controllerContext, bindingContext, propertyDescriptor);
            if (serviceProvidersSearchVm != null)
            {
                BindListingsSearchModel(serviceProvidersSearchVm, controllerContext, propertyDescriptor);
            }
        }
 internal static ServiceProviderSearchModel ToServiceProviderSearchModel(this ServiceProvidersSearchVm searchVm)
 {
     return(new ServiceProviderSearchModel()
     {
         Criteria = searchVm.Criteria.ToSearchCriteria(),
         PageNumber = searchVm.PageNumber,
         PageSize = SearchExtentions.Config.DefaultPageSize,
         ServiceCategoriesIds = (
             from a in searchVm.ServiceCategories
             select(long) a).ToList <long>(),
         SortType = searchVm.SortType
     });
 }
 public static List <ServiceProviderBlockVm> GetNewSmililarServiceProvider(ServiceProvidersSearchVm searchVm, long CommunityId)
 {
     Entities.Client.Search.FeaturedServiceProviderSearchModel searchModel2 = searchVm.ToFeaturedServiceProviderSearchModel();
     return(SearchBc.Instance.SearchFeaturedServiceProviders(searchModel2, CommunityId).Result.MapToServiceProviderBlockVmList());
 }
Пример #13
0
 public static string GetLeadFormMessage(this ServiceProvidersSearchVm searchVm)
 {
     return(LeadFormMessages.ServiceProvider.Replace("{SERVICE_PROVIDER_NAME}", string.Empty));
 }
Пример #14
0
        private static IEnumerable <KeyValuePair <string, object> > RefinedParameters(ServiceProvidersSearchVm model)
        {
            RouteValueDictionary routeValueDictionary = new RouteValueDictionary();

            if (model.ServiceCategories != null && model.ServiceCategories.Any())
            {
                routeValueDictionary.Add("service-categories", string.Join("-", model.ServiceCategories));
            }
            if (model.SortType != ServiceProviderSortType.Featured && model.SortType != 0)
            {
                routeValueDictionary.Add("sort-by", model.SortType.ToSortTypeUrlStr());
            }
            return(routeValueDictionary);
        }