public DataWrapper GetCategoryTrimFilterAttributesByCategory([FromBody] string queryStr) { var query = JsonConvert.DeserializeObject <CategoryFilterQuery>(queryStr); var categoryName = query.CategoryName; var categoryTranslator = UriTokenTranslators.GetCategoryTranslatorByName(categoryName); var categorySeoName = categoryTranslator.SeoName; try { var categoryTrimFilterAttributes = VehicleSpecService.GetCategoryTrimFilterAttributesByCategoryAsync(categorySeoName).Result; if (categoryTrimFilterAttributes != null) { var queryResults = categoryTrimFilterAttributes; var response = new CategoryTrimFilterAttributeResponse { CategoryTrimFilterAttributes = queryResults }; return(DataWrapper(response)); } return(DataWrapper()); } catch (Exception) { return(DataWrapper()); } }
public DataWrapper GetCustomFilterGroupDataByVehicleAttributeName([FromBody] string queryStr) { var query = JsonConvert.DeserializeObject <VehicleAttributeFilterQuery>(queryStr); var vehicleAttributeName = query.VehicleAttributeSeoName; var vehicleAttributeTranslator = UriTokenTranslators.GetVehicleAttributeTranslatorBySeoName(vehicleAttributeName); var vehicleAttributeSeoName = vehicleAttributeTranslator.SeoName; try { var categoryFilterGroups = VehicleSpecService.GetCustomFilterGroupDataByVehicleAttributeNameAsync(vehicleAttributeSeoName).Result; if (categoryFilterGroups != null) { var queryResults = categoryFilterGroups; var response = new CategoryFilterGroupResponse { CategoryFilterGroups = queryResults }; return(DataWrapper(response)); } return(DataWrapper()); } catch (Exception) { return(DataWrapper()); } }
public DataWrapper GetCompareCarSuperModelByMakes(string makeSeoName) { var makeTranslator = UriTokenTranslators.GetMakeTranslatorBySeoName(makeSeoName); if (makeTranslator == null) { return(DataWrapper()); } try { var compareSuperModelList = VehicleSpecService.GetNewSuperModelsByMakeAsync(makeSeoName).Result; if (compareSuperModelList != null) { var response = compareSuperModelList.Select(t => new CompareSuperModels { Make = t.Make, Name = t.Name, SeoName = t.SeoName, }); return(DataWrapper(response)); } return(DataWrapper()); } catch (Exception) { //if service returns no filter data... return(DataWrapper()); } }
public bool Match(HttpContextBase httpContext, Route route, string parameterName, RouteValueDictionary values, RouteDirection routeDirection) { var categorySeoName = values["categorySeoName"] as string ?? String.Empty; return(categorySeoName.IsNotNullOrEmpty() && UriTokenTranslators.GetAllCategoryTranslators() .Any(category => category.SeoName.Equals(categorySeoName, StringComparison.InvariantCultureIgnoreCase))); }
public bool Match(HttpContextBase httpContext, Route route, string parameterName, RouteValueDictionary values, RouteDirection routeDirection) { var vehicleAttributeSeoName = values["vehicleAttributeSeoName"] as string ?? String.Empty; return(vehicleAttributeSeoName.IsNotNullOrEmpty() && (UriTokenTranslators.GetAllVehicleAttributeTranslators() .Any(vehicleAttribute => vehicleAttribute.SeoName.Equals(vehicleAttributeSeoName, StringComparison.InvariantCultureIgnoreCase)))); }
public bool Match(HttpContextBase httpContext, Route route, string parameterName, RouteValueDictionary values, RouteDirection routeDirection) { var superModelSeoName = values["superModelSeoName"] as string ?? String.Empty; return(superModelSeoName.IsNotNullOrEmpty() && UriTokenTranslators.GetAllNewSuperModelTranslators() .Any(superModel => superModel.SeoName.Equals(superModelSeoName, StringComparison.InvariantCultureIgnoreCase))); }
public ActionResult Make(string makeSeoName) { const string assetsPrefix = "carsforsale.make"; var makeTranslator = UriTokenTranslators.GetMakeTranslatorBySeoName(makeSeoName); if (makeTranslator == null) { return(HttpNotFound()); } var metadata = MetadataService.GetMetadataForPage(HttpContext); var vspModelsTask = VehicleSpecService.GetModelsByMakeAsync(makeSeoName); // availableModels => represents models we actually have inventory for var availableModelsTask = CarsForSaleService.GetModelsDomainByMakeIdAsync(makeTranslator.AbtMakeId); vspModelsTask.Wait(); availableModelsTask.Wait(); var vspModels = vspModelsTask.Result; var availableModels = availableModelsTask.Result.Select(m => m.Description).ToList(); var models = vspModels .Where(m => availableModels.Contains(m.Name)) .Select(mo => new MakeViewModel.Dto.Model { MatchValue = String.Format("{0}~{1}", mo.AbtMakeId, mo.Name), Name = mo.Name, SeoName = mo.SeoName }); var viewModel = new MakeViewModel(assetsPrefix, metadata) { InlineHeadScript = AssetService.GetInlineHeadScript(), InlineHeadStyles = AssetService.GetInlineHeadStyles(assetsPrefix), TrackMeta = new TrackMeta(metadata) { Make = makeTranslator.Name }, AdvertMeta = new AdvertMeta(new { make = makeTranslator.Name }), OfferMeta = new OfferMeta(new { make = makeTranslator.Name }), Make = new MakeViewModel.Dto.Make { Name = makeTranslator.Name, SeoName = makeTranslator.SeoName }, Models = models }; return(View("Make", viewModel)); }
public bool Match(HttpContextBase httpContext, Route route, string parameterName, RouteValueDictionary values, RouteDirection routeDirection) { var makeSeoName = values["makeSeoName"] as string ?? String.Empty; return(makeSeoName.IsNotNullOrEmpty() && UriTokenTranslators.GetAllMakeTranslators() .Where(m => m.IsActive) .Any(make => make.SeoName.Equals(makeSeoName, StringComparison.InvariantCultureIgnoreCase))); }
public bool Match(HttpContextBase httpContext, Route route, string parameterName, RouteValueDictionary values, RouteDirection routeDirection) { var yearNumberStr = values["yearNumber"] as string ?? String.Empty; int yearNumber; return(Int32.TryParse(yearNumberStr, out yearNumber) && UriTokenTranslators.GetAllYearTranslators() .Any(year => year.Number == yearNumber)); }
public DataWrapper GetCompareCarTrimsByMakeBySuperModel(string makeSeoName, string superModelSeoName) { var makeTranslator = UriTokenTranslators.GetMakeTranslatorBySeoName(makeSeoName); var superModelTranslator = UriTokenTranslators.GetSuperModelTranslatorBySeoName(superModelSeoName); if (makeTranslator == null || superModelTranslator == null) { return(DataWrapper()); } try { var compareTrimList = VehicleSpecService.GetNewTrimsByMakeBySuperModelAsync(makeSeoName, superModelSeoName).Result; if (compareTrimList != null) { var response = compareTrimList .OrderByDescending(t => t.Year) .ThenBy(t => t.Make) .ThenBy(t => t.Model) .ThenBy(t => t.Name) .Select(t => new CompareListTrim { Name = t.Name, SeoName = t.SeoName, Year = t.Year, Id = t.Id, Msrp = t.Msrp }); return(DataWrapper(response)); } return(DataWrapper()); } catch (Exception) { //if service returns no filter data... return(DataWrapper()); } }
public ActionResult Article(string title, int contentId) { const string assetsPrefix = "finance.article"; const int numAdUnits = 4; var metadata = MetadataService.GetMetadataForPage(HttpContext); var articleTask = VehicleContentService.GetArticleByIdAsync(contentId); articleTask.Wait(); var article = articleTask.Result; var makeTranslator = String.Empty; var modelTranslator = String.Empty; var yearTranslator = String.Empty; var categoryTranslator = String.Empty; if (article.Make.IsNotNullOrEmpty()) { makeTranslator = UriTokenTranslators.GetMakeTranslatorByName(article.Make).Name; } if (article.Model.IsNotNullOrEmpty()) { modelTranslator = UriTokenTranslators.GetModelTranslatorByName(article.Model).Name; } if (article.Year.ToString().IsNotNullOrEmpty()) { yearTranslator = article.Year.ToString(); } if (article.VehicleCategory.IsNotNullOrEmpty()) { var tempcategoryTranslator = UriTokenTranslators.GetCategoryTranslatorByName(article.VehicleCategory); if (tempcategoryTranslator != null) { categoryTranslator = tempcategoryTranslator.Name; } } var currentUrl = HttpContext.Request.Url.AbsoluteUri; // throws a 404 exception if the current URL doesn't match the URL of the article. if (article.Url.IsNullOrEmpty() || currentUrl.IndexOf(article.Url) == -1) { throw new HttpException(404, "HTTP/1.1 404 Not Found"); } ICollection <ArticleAd> ads = new Collection <ArticleAd>(); IList <ICollection <ArticleAd> > articleAds = new List <ICollection <ArticleAd> >(); IList <TrackerVehicle> articleVehicles = new List <TrackerVehicle>(); TrackerVehicle vehicle; // set article page ads foreach (var articlePage in article.ArticlePages) { ads = articlePage.AdUnits; articleAds.Add(ads); if (articlePage.Make != null) { vehicle = new TrackerVehicle { Make = articlePage.Make, Model = articlePage.Model, SuperModel = articlePage.Model, Year = articlePage.Year }; } else { vehicle = new TrackerVehicle { Make = makeTranslator, Model = modelTranslator, SuperModel = modelTranslator, Year = Int32.Parse(yearTranslator) }; } articleVehicles.Add(vehicle); } // set article page ads for endcap ICollection <ArticleAd> adsEndcap = new Collection <ArticleAd>(); for (var adUnit = 1; adUnit <= numAdUnits; adUnit++) { var articleAdUnit = article.AdUnits.FirstOrDefault(x => x.AdUnitId == adUnit); adsEndcap.Add(new ArticleAd { AdMake = articleAdUnit.AdMake ?? String.Empty, AdModel = articleAdUnit.AdModel ?? String.Empty, AdVehicleYear = articleAdUnit.AdVehicleYear, AdCategory = articleAdUnit.AdCategory ?? String.Empty, AdUnitId = articleAdUnit.AdUnitId }); } articleAds.Add(adsEndcap); var articleVehiclesJsonStr = JsonConvert.SerializeObject(articleVehicles); var articleAdsJsonStr = JsonConvert.SerializeObject(articleAds); var viewModel = new ArticleViewModel(assetsPrefix, metadata) { InlineHeadScript = AssetService.GetInlineHeadScript(), InlineHeadStyles = AssetService.GetInlineHeadStyles(assetsPrefix), AdvertMeta = new AdvertMeta(new { ads = articleAds[0] }) , PageMeta = new PageMeta { Title = article.Title, Canonical = "http://www.car.com" + article.Url, Keywords = article.MetaKeywords, Description = article.MetaDescription }, TrackMeta = new TrackMeta { Make = makeTranslator, SuperModel = modelTranslator, Year = yearTranslator, Category = categoryTranslator }, OpenGraphMeta = new OpenGraphMeta { Title = article.Title, Description = article.MetaDescription, Type = "article", Url = "http://www.car.com" + article.Url, Images = article.ArticlePages.Select(x => x.PageImage).Where(x => x.IsNotNullOrEmpty()).ToList() }, Article = article }; viewModel.RegisterPageJson(articleVehiclesJsonStr, "ABT.pageJson.articleVehicles"); viewModel.RegisterPageJson(articleAdsJsonStr, "ABT.pageJson.articleAds"); ArticleGalleryViewModel articleGallery = new ArticleGalleryViewModel(); { articleGallery.Article = viewModel.Article; } viewModel.ArticleGallery = articleGallery; return(View("Article", viewModel)); }