public FindProduct GetFindProduct(Mediachase.Commerce.IMarket market)
        {
            var language = (Language == null ? string.Empty : Language.Name);
            var findProduct = new FindProduct(this,language);
            findProduct.Color = Color != null ? new List<string>() { Color } : new List<string>();
            findProduct.Description = Description;
            findProduct.Overview = Overview;
            EPiServer.Commerce.SpecializedProperties.Price defaultPrice = this.GetDefaultPrice();
            findProduct.DefaultPrice = this.GetDisplayPrice(market);
            findProduct.DefaultPriceAmount = this.GetDefaultPriceAmount(market);

            PriceAndMarket discountPrice = this.GetDiscountPrice(market);
            findProduct.DiscountedPriceAmount = GetPriceWithCheck(discountPrice);
            findProduct.DiscountedPrice = GetDisplayPriceWithCheck(discountPrice);

            PriceAndMarket customerClubPrice = this.GetCustomerClubPrice(market);
            findProduct.CustomerClubPriceAmount = GetPriceWithCheck(customerClubPrice);
            findProduct.CustomerClubPrice = GetDisplayPriceWithCheck(customerClubPrice);

            findProduct.Brand = this.Facet_Brand;
            return findProduct;
        }
        // --- End of property definitions
        public FindProduct GetFindProduct(IMarket market)
        {
            var language = (Language == null ? string.Empty : Language.Name);
            var findProduct = new FindProduct(this, language);

            findProduct.Description = Info_Description;
            findProduct.Sizes = new List<string>() { this.Size };
            EPiServer.Commerce.SpecializedProperties.Price defaultPrice = this.GetDefaultPrice();
            findProduct.DefaultPrice = this.GetDisplayPrice(market);
            findProduct.DefaultPriceAmount = this.GetDefaultPriceAmount(market);
            findProduct.DiscountedPrice = this.GetDiscountDisplayPrice(defaultPrice, market);
            findProduct.CustomerClubPrice = this.GetCustomerClubDisplayPrice(market);
            findProduct.GrapeMixList = GetGrapeMixList();

            findProduct.Varieties = GrapeMix;
            findProduct.Vintage = Vintage;
            findProduct.Taste = Taste;
            findProduct.Style = Style;
            findProduct.Country = Country;
            findProduct.Region = Region;
            findProduct.Maturity = Maturity;
            findProduct.Alcohol = Alcohol;
            findProduct.Closure = Closure;
            findProduct.Brand = Facet_Brand;

            return findProduct;
        }
        public FindProduct GetFindProduct(IMarket market)
        {
            List<VariationContent> productVariants = this.GetVaritions().ToList();
            var variations = GetGenericVariants(productVariants, market);

            var language = (Language == null ? string.Empty : Language.Name);

            var findProduct = new FindProduct(this, language);

            findProduct.Description = Description;
            findProduct.Color = Color != null ? new List<string>() {Color} : new List<string>();
            findProduct.Sizes =
                variations.Select(x => x.Size ?? string.Empty).Distinct().ToList();
            findProduct.Brand = this.Facet_Brand;

            EPiServer.Commerce.SpecializedProperties.Price defaultPrice = productVariants.GetDefaultPrice(market);

            findProduct.DefaultPrice = productVariants.GetDisplayPrice(market);
            findProduct.DefaultPriceAmount = productVariants.GetDefaultPriceAmount(market);

            PriceAndMarket discountPrice = productVariants.GetDiscountPrice(market);
            findProduct.DiscountedPrice = GetDisplayPriceWithCheck(discountPrice);
            findProduct.DiscountedPriceAmount = GetPriceWithCheck(discountPrice);

            PriceAndMarket customerClubPrice = productVariants.GetCustomerClubPrice(market);
            findProduct.CustomerClubPriceAmount = GetPriceWithCheck(customerClubPrice);
            findProduct.CustomerClubPrice = GetDisplayPriceWithCheck(customerClubPrice);

            findProduct.GenericVariants = variations;

            return findProduct;
        }
        public FindProduct GetFindProduct(Mediachase.Commerce.IMarket market)
        {
            var language = (Language == null ? string.Empty : Language.Name);
            var findProduct = new FindProduct(this, language);

            findProduct.Description = Description;
            findProduct.Overview = Overview;
            EPiServer.Commerce.SpecializedProperties.Price defaultPrice = this.GetDefaultPrice();
            findProduct.DefaultPrice = this.GetDisplayPrice(market);
            findProduct.DefaultPriceAmount = this.GetDefaultPriceAmount(market);

            PriceAndMarket discountPrice = this.GetDiscountPrice(market);
            findProduct.DiscountedPriceAmount = GetPriceWithCheck(discountPrice);
            findProduct.DiscountedPrice = GetDisplayPriceWithCheck(discountPrice);

            PriceAndMarket customerClubPrice = this.GetCustomerClubPrice(market);
            findProduct.CustomerClubPriceAmount = GetPriceWithCheck(customerClubPrice);
            findProduct.CustomerClubPrice = GetDisplayPriceWithCheck(customerClubPrice);

            findProduct.Brand = Facet_Brand;
            findProduct.Resolution = Resolution;
            findProduct.LensMount = LensMount;
            findProduct.CameraFormat = CameraFormat;
            findProduct.FileFormat = FileFormat;
            findProduct.Connectivity = Connectivity;
            findProduct.Battery = Battery;
            findProduct.MemoryCardType = MemoryCardType;
            findProduct.Weight = Weight;

            return findProduct;
        }
        public FindProduct GetFindProduct(IMarket market)
        {
            List<VariationContent> productVariants = GetVariants(this);
            var variations = GetFashionVariants(productVariants, market);

            var language = (Language == null ? string.Empty : Language.Name);
            string sizeType = string.IsNullOrEmpty(SizeType) ? "" : SizeType.First().ToString(CultureInfo.InvariantCulture);

            var findProduct = new FindProduct(this, language);

            findProduct.Description = Description;
            findProduct.Color = FacetColor == null ? new List<string>() : FacetColor.Split(',').ToList();
            findProduct.Sizes =
                variations.Select(x => x.Size == null ? string.Empty : x.Size.TrimEnd('-')).Distinct().ToList();
            findProduct.SizeType = sizeType;
            findProduct.SizeUnit = SizeUnit;
            findProduct.Fit = Fit;
            findProduct.SizesList = CreateSizeList(variations.Select(x => x.Size).Distinct().ToList(), SizeUnit,
                sizeType);

            EPiServer.Commerce.SpecializedProperties.Price defaultPrice = productVariants.GetDefaultPrice(market);

            findProduct.DefaultPrice = productVariants.GetDisplayPrice(market);
            findProduct.DefaultPriceAmount = productVariants.GetDefaultPriceAmount(market);
            findProduct.DiscountedPrice = productVariants.GetDiscountDisplayPrice(defaultPrice, market);

            // TODO: Set if not the same as default price
            findProduct.DiscountedPriceAmount = 0;

            findProduct.CustomerClubPrice = productVariants.GetCustomerClubDisplayPrice(market);
            findProduct.Variants = variations;
            findProduct.NewItemText = NewItemText;
            return findProduct;
        }