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 GetCustomFilterGroupDataByCategoryAndVehicleAttributeName([FromBody] string queryStr)
        {
            var query                = JsonConvert.DeserializeObject <VehicleAttributeFilterQuery>(queryStr);
            var categoryName         = query.CategoryName;
            var vehicleAttributeName = query.VehicleAttributeSeoName;

            var categoryTranslator         = UriTokenTranslators.GetCategoryTranslatorByName(categoryName);
            var categorySeoName            = categoryTranslator.SeoName;
            var vehicleAttributeTranslator = UriTokenTranslators.GetVehicleAttributeTranslatorBySeoName(vehicleAttributeName);
            var vehicleAttributeSeoName    = vehicleAttributeTranslator.SeoName;

            try
            {
                var categoryFilterGroups = VehicleSpecService.GetCustomFilterGroupDataByCategoryAndVehicleAttributeNameAsync(categorySeoName, vehicleAttributeSeoName).Result;
                if (categoryFilterGroups != null)
                {
                    var queryResults = categoryFilterGroups;

                    var response = new CategoryFilterGroupResponse
                    {
                        CategoryFilterGroups = queryResults
                    };

                    return(DataWrapper(response));
                }

                return(DataWrapper());
            }
            catch (Exception)
            {
                return(DataWrapper());
            }
        }
Exemple #3
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));
        }