public WineSKUViewModel(WineSKUContent currentContent)
 {
     CatalogContent = currentContent;
     Media          = GetMedia(currentContent);
     CartItem       = new CartItemModel(CatalogContent)
     {
         CanBuyEntry = true
     };
 }
 public WineSKUViewModel(WineSKUContent currentContent)
 {
     CatalogContent = currentContent;
     Media          = GetMedia(currentContent);
     CartItem       = new CartItemModel(CatalogContent)
     {
         CanBuyEntry = true
     };
     if (currentContent["WineRegion"] != null)
     {
         CartItem.WineRegion = currentContent["WineRegion"].ToString();
     }
 }
        private List <MediaData> GetMedia(WineSKUContent currentContent)
        {
            var contentLoader          = ServiceLocator.Current.GetInstance <EPiServer.IContentLoader>();
            var mediaReferences        = currentContent.AssetImageUrls();
            List <MediaData> mediaData = new List <MediaData>();

            foreach (ContentReference mediaReference in mediaReferences)
            {
                MediaData file;
                if (contentLoader.TryGet <MediaData>(mediaReference, out file))
                {
                    mediaData.Add(file);
                }
            }
            return(mediaData);
        }
        public WineFindProduct(EntryContentBase entryContentBase, string language) : base(entryContentBase, language)
        {
            WineSKUContent wineSkuContent = entryContentBase as WineSKUContent;

            if (wineSkuContent != null)
            {
                Varieties = wineSkuContent.GrapeMix;
                Vintage   = wineSkuContent.Vintage;
                Taste     = wineSkuContent.Taste;
                Style     = wineSkuContent.Style;
                Country   = wineSkuContent.Country;
                Region    = wineSkuContent.Region;
                Maturity  = wineSkuContent.Maturity;
                Alcohol   = wineSkuContent.Alcohol;
                Closure   = wineSkuContent.Closure;
                Brand     = wineSkuContent.Facet_Brand;
            }
        }
        // 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"));
            }
        }