private void TrackProductImpressions(WineProductSearchResult wineProductSearchResult)
 {
     foreach (var product in wineProductSearchResult.Products)
     {
         GoogleAnalyticsTracking tracker = new GoogleAnalyticsTracking(ControllerContext.HttpContext);
         tracker.ProductImpression(
             product.Code,
             product.DisplayName,
             null,
             product.BrandName,
             null,
             "Wine Product Search Block");
     }
 }
        // GET: RelatedProductsBlock
        public override ActionResult Index(WineProductSearchBlock currentContent)
        {
            try
            {
                // We need to know which language the page we're hosted on is
                string language = ControllerContext.RequestContext.GetLanguage();

                List <ProductListViewModel> productListViewModels = currentContent.GetSearchResults(language);

                if (productListViewModels == null)
                {
                    // No hits, but we could still have manually added products
                    productListViewModels = new List <ProductListViewModel>();
                }

                // Override result with priority products
                if (currentContent.Products != null)
                {
                    foreach (var contentAreaItem in currentContent.Products.Items)
                    {
                        var item = contentAreaItem.GetContent();
                        if (item != null)
                        {
                            WineSKUContent wineSkuContent = _contentLoader.Get <WineSKUContent>(item.ContentLink);
                            if (wineSkuContent != null)
                            {
                                // Remove priority products from list
                                productListViewModels.RemoveAll(
                                    x => x.ContentLink.CompareToIgnoreWorkID(wineSkuContent.ContentLink));
                                // Add to beginning
                                ProductListViewModel priorityProduct =
                                    _productService.GetProductListViewModel(wineSkuContent);
                                productListViewModels.Insert(0, priorityProduct);
                            }
                        }
                    }
                }

                if (productListViewModels.Count > currentContent.ResultsPerPage)
                {
                    productListViewModels = productListViewModels.Take(currentContent.ResultsPerPage).ToList();
                }

                WineProductSearchResult wineProductSearchResult = new WineProductSearchResult
                {
                    Heading  = currentContent.Heading,
                    Products = productListViewModels
                };


                // Track impressions
                TrackProductImpressions(wineProductSearchResult);


                return(View(wineProductSearchResult));
            }
            catch (ServiceException)
            {
                return(View("FindError"));
            }
        }