示例#1
0
        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());
            }
        }
示例#2
0
        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());
            }
        }
示例#3
0
        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());
            }
        }
示例#4
0
        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)));
        }
示例#5
0
        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))));
        }
示例#6
0
        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)));
        }
示例#7
0
        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));
        }
示例#8
0
        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)));
        }
示例#9
0
        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));
        }
示例#10
0
        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());
            }
        }
示例#11
0
        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));
        }