/// <summary>
 /// Initializes a new instance of the <see cref="ProductContentBase"/> class.
 /// </summary>
 /// <param name="productBase">
 /// The product base.
 /// </param>
 /// <param name="contentType">
 /// The content Type.
 /// </param>
 /// <param name="specificCulture">
 /// Specifically sets the culture
 /// </param>
 protected ProductContentBase(ProductDisplayBase productBase, PublishedContentType contentType, string specificCulture)
 {
     Mandate.ParameterNotNull(productBase, "productBase");
     _productBase = productBase;
     this.CultureName = specificCulture;
     _contentType = contentType;
     this.Initialize();
 }
        /// <summary>
        /// The template id.
        /// </summary>
        /// <param name="display">
        /// The display.
        /// </param>
        /// <param name="cultureName">
        /// The culture name.
        /// </param>
        /// <returns>
        /// The <see cref="int"/>.
        /// </returns>
        internal static int TemplateId(this ProductDisplayBase display, string cultureName)
        {
            if (!display.DetachedContents.Any())
            {
                return(0);
            }

            var dc = display.DetachedContentForCulture(cultureName);

            return(dc == null ? 0 : dc.TemplateId);
        }
        /// <summary>
        /// The slug.
        /// </summary>
        /// <param name="display">
        /// The display.
        /// </param>
        /// <param name="cultureName">
        /// The culture name.
        /// </param>
        /// <returns>
        /// The <see cref="string"/>.
        /// </returns>
        internal static string Slug(this ProductDisplayBase display, string cultureName)
        {
            var defaultSlug = display.GetDefaultSlug();

            if (!display.DetachedContents.Any())
            {
                return(defaultSlug);
            }

            var dc = display.DetachedContentForCulture(cultureName);

            return(dc.Slug.IsNullOrWhiteSpace() ? defaultSlug : dc.Slug);
        }
Example #4
0
 /// <summary>
 /// Utility for setting the IsForBackOfficeEditor property.
 /// </summary>
 /// <param name="display">
 /// The display.
 /// </param>
 /// <param name="conversionType">
 /// The value conversion type.
 /// </param>
 internal static void EnsureValueConversion(this ProductDisplayBase display, DetachedValuesConversionType conversionType = DetachedValuesConversionType.Db)
 {
     if (display.DetachedContents.Any())
     {
         foreach (var dc in display.DetachedContents)
         {
             var contentType = DetachedValuesConverter.Current.GetContentTypeByKey(dc.DetachedContentType.UmbContentType.Key);
             if (dc.ValueConversion != conversionType)
             {
                 dc.ValueConversion = conversionType;
                 if (contentType != null)
                 {
                     dc.DetachedDataValues = DetachedValuesConverter.Current.Convert(contentType, dc.DetachedDataValues, conversionType);
                 }
             }
         }
     }
 }
        /// <summary>
        /// Adds or updates <see cref="IProductVariantDetachedContent"/>.
        /// </summary>
        /// <param name="destination">
        /// The destination.
        /// </param>
        /// <param name="display">
        /// The display.
        /// </param>
        internal static void AddOrUpdateDetachedContent(this IProductBase destination, ProductDisplayBase display)
        {
            if (destination.DetachedContents.Any())
            {
                // detached content
                var removedLanguages =
                    destination.DetachedContents.Where(
                        x => !display.DetachedContents.Select(y => y.CultureName).Contains(x.CultureName));

                foreach (var lang in removedLanguages)
                {
                    destination.DetachedContents.RemoveItem(lang.CultureName);
                }
            }

            foreach (var detachedContent in display.DetachedContents.ToArray())
            {
                IProductVariantDetachedContent pvdc;
                if (destination.DetachedContents.Contains(detachedContent.CultureName))
                {
                    var destContent = destination.DetachedContents[detachedContent.CultureName];
                    detachedContent.ToProductVariantDetachedContent(destContent);
                }
                else
                {
                    var variant = display.GetType().IsAssignableFrom(typeof(ProductDisplay))
                                      ? ((ProductDisplay)display).AsMasterVariantDisplay()
                                      : (ProductVariantDisplay)display;
                    destination.DetachedContents.Add(detachedContent.ToProductVariantDetachedContent(variant.Key));
                }
            }
        }
        /// <summary>
        /// Adds or updates <see cref="IProductVariantDetachedContent"/>.
        /// </summary>
        /// <param name="destination">
        /// The destination.
        /// </param>
        /// <param name="display">
        /// The display.
        /// </param>
        internal static void AddOrUpdateDetachedContent(this IProductBase destination, ProductDisplayBase display)
        {
            if (destination.DetachedContents.Any())
            {
                // detached content
                var removedLanguages =
                    destination.DetachedContents.Where(
                        x => !display.DetachedContents.Select(y => y.CultureName).Contains(x.CultureName));

                foreach (var lang in removedLanguages)
                {
                    destination.DetachedContents.RemoveItem(lang.CultureName);
                }
            }


            foreach (var detachedContent in display.DetachedContents.ToArray())
            {
                if (destination.DetachedContents.Contains(detachedContent.CultureName))
                {
                    var destContent = destination.DetachedContents[detachedContent.CultureName];
                    detachedContent.ToProductVariantDetachedContent(destContent);
                }
                else
                {
                    var variant = display.GetType().IsAssignableFrom(typeof(ProductDisplay))
                                      ? ((ProductDisplay)display).AsMasterVariantDisplay()
                                      : (ProductVariantDisplay)display;
                    destination.DetachedContents.Add(detachedContent.ToProductVariantDetachedContent(variant.Key));
                }
            }
        }
 /// <summary>
 /// Gets the <see cref="ProductVariantDetachedContentDisplay"/> for a given culture.
 /// </summary>
 /// <param name="display">
 /// The display.
 /// </param>
 /// <param name="cultureName">
 /// The culture name.
 /// </param>
 /// <returns>
 /// The <see cref="ProductVariantDetachedContentDisplay"/>.
 /// </returns>
 internal static ProductVariantDetachedContentDisplay DetachedContentForCulture(this ProductDisplayBase display, string cultureName)
 {
     return(display.DetachedContents.Any()
                ? display.DetachedContents.FirstOrDefault(x => x.CultureName == cultureName)
                : null);
 }
 /// <summary>
 /// Gets the default slug.
 /// </summary>
 /// <param name="display">
 /// The display.
 /// </param>
 /// <returns>
 /// The <see cref="string"/>.
 /// </returns>
 internal static string GetDefaultSlug(this ProductDisplayBase display)
 {
     return(PathHelper.ConvertToSlug(string.Format("{0}-{1}", display.Name, display.Sku)));
 }
 /// <summary>
 /// Adds product base values
 /// </summary>
 /// <param name="extendedData">
 /// The extended data
 /// </param>
 /// <param name="productBase">
 /// The base product
 /// </param>
 private static void AddBaseProductValues(ExtendedDataCollection extendedData, ProductDisplayBase productBase)
 {
     extendedData.SetValue(Constants.ExtendedDataKeys.CostOfGoods, productBase.CostOfGoods.ToString(CultureInfo.InvariantCulture));
     extendedData.SetValue(Constants.ExtendedDataKeys.Weight, productBase.Weight.ToString(CultureInfo.InvariantCulture));
     extendedData.SetValue(Constants.ExtendedDataKeys.Width, productBase.Width.ToString(CultureInfo.InvariantCulture));
     extendedData.SetValue(Constants.ExtendedDataKeys.Height, productBase.Height.ToString(CultureInfo.InvariantCulture));
     extendedData.SetValue(Constants.ExtendedDataKeys.Length, productBase.Length.ToString(CultureInfo.InvariantCulture));
     extendedData.SetValue(Constants.ExtendedDataKeys.Barcode, productBase.Barcode);
     extendedData.SetValue(Constants.ExtendedDataKeys.Price, productBase.Price.ToString(CultureInfo.InvariantCulture));
     extendedData.SetValue(Constants.ExtendedDataKeys.OnSale, productBase.OnSale.ToString());
     extendedData.SetValue(Constants.ExtendedDataKeys.Manufacturer, productBase.Manufacturer);
     extendedData.SetValue(Constants.ExtendedDataKeys.ManufacturerModelNumber, productBase.ManufacturerModelNumber);
     extendedData.SetValue(Constants.ExtendedDataKeys.SalePrice, productBase.SalePrice.ToString(CultureInfo.InvariantCulture));
     extendedData.SetValue(Constants.ExtendedDataKeys.TrackInventory, productBase.TrackInventory.ToString());
     extendedData.SetValue(Constants.ExtendedDataKeys.OutOfStockPurchase, productBase.OutOfStockPurchase.ToString());
     extendedData.SetValue(Constants.ExtendedDataKeys.Taxable, productBase.Taxable.ToString());
     extendedData.SetValue(Constants.ExtendedDataKeys.Shippable, productBase.Shippable.ToString());
     extendedData.SetValue(Constants.ExtendedDataKeys.Download, productBase.Download.ToString());
     extendedData.SetValue(Constants.ExtendedDataKeys.DownloadMediaId, productBase.DownloadMediaId.ToString());
     extendedData.SetValue(Constants.ExtendedDataKeys.VersionKey, productBase.VersionKey.ToString());
 }