Example #1
0
        /// <summary>
        /// Maps <see cref="ProductVariantDetachedContentDisplay"/> to <see cref="IProductVariantDetachedContent"/>.
        /// </summary>
        /// <param name="display">
        /// The display.
        /// </param>
        /// <param name="productVariantKey">
        /// The product Variant Key.
        /// </param>
        /// <returns>
        /// The <see cref="IProductVariantDetachedContent"/>.
        /// </returns>
        public static IProductVariantDetachedContent ToProductVariantDetachedContent(this ProductVariantDetachedContentDisplay display, Guid productVariantKey)
        {
            var contentType = new DetachedContentType(
                display.DetachedContentType.EntityTypeField.TypeKey,
                display.DetachedContentType.UmbContentType.Key)
            {
                Key         = display.DetachedContentType.Key,
                Name        = display.DetachedContentType.Name,
                Description = display.DetachedContentType.Description
            };

            // Assign the default template
            var templateId = 0;

            if (display.TemplateId == 0 && display.DetachedContentType.UmbContentType.DefaultTemplateId != 0)
            {
                templateId = display.DetachedContentType.UmbContentType.DefaultTemplateId;
            }

            var pvdc = new ProductVariantDetachedContent(productVariantKey, contentType, display.CultureName, new DetachedDataValuesCollection(display.DetachedDataValues))
            {
                TemplateId    = templateId,
                Slug          = display.Slug,
                CanBeRendered = display.CanBeRendered
            };

            if (!display.Key.Equals(Guid.Empty))
            {
                pvdc.Key = display.Key;
            }
            return(pvdc);
        }
Example #2
0
        /// <summary>
        /// Builds <see cref="IProductVariantDetachedContent"/>.
        /// </summary>
        /// <param name="dto">
        /// The dto.
        /// </param>
        /// <returns>
        /// The <see cref="IProductVariantDetachedContent"/>.
        /// </returns>
        public IProductVariantDetachedContent BuildEntity(ProductVariantDetachedContentDto dto)
        {
            var detachedContentType = _detachedContentTypeFactory.Value.BuildEntity(dto.DetachedContentType);

            var values = dto.Values.IsNullOrWhiteSpace()
                             ? Enumerable.Empty <KeyValuePair <string, string> >()
                             : JsonConvert.DeserializeObject <IEnumerable <KeyValuePair <string, string> > >(dto.Values);

            var valuesCollection = new DetachedDataValuesCollection(values);

            var detachedContent = new ProductVariantDetachedContent(
                dto.ProductVariantKey,
                detachedContentType,
                dto.CultureName,
                valuesCollection)
            {
                Key           = dto.Key,
                Slug          = dto.Slug ?? string.Empty,
                TemplateId    = dto.TemplateId ?? 0,
                CanBeRendered = dto.CanBeRendered,
                CreateDate    = dto.CreateDate,
                UpdateDate    = dto.UpdateDate
            };

            detachedContent.ResetDirtyProperties();

            return(detachedContent);
        }
        /// <summary>
        /// Gets a collection of <see cref="ProductVariantDetachedContent"/> from examine result.
        /// </summary>
        /// <param name="result">
        /// The result.
        /// </param>
        /// <param name="alias">
        /// The alias.
        /// </param>
        /// <returns>
        /// The <see cref="IEnumerable{ProductVariantDetachedContentDispaly}"/>.
        /// </returns>
        private static IEnumerable <ProductVariantDetachedContentDisplay> GetProductVariantDetachedContentDisplayCollection(SearchResult result, string alias)
        {
            if (!result.Fields.ContainsKey(alias))
            {
                return(Enumerable.Empty <ProductVariantDetachedContentDisplay>());
            }

            var jarray = JArray.Parse(result.Fields[alias]);

            var contents = new List <ProductVariantDetachedContentDisplay>();

            // ReSharper disable once LoopCanBeConvertedToQuery
            foreach (var j in jarray)
            {
                var jtoken      = JObject.Parse(j.ToString());
                var contentType = jtoken.GetValue("DetachedContentType").ToObject <DetachedContentType>();

                var dataValues = jtoken.GetValue("DetachedDataValues").ToObject <IEnumerable <KeyValuePair <string, string> > >();
                var pvdc       = new ProductVariantDetachedContent(jtoken.GetValue("ProductVariantKey").ToObject <Guid>(), contentType, j.Value <string>("CultureName"), new DetachedDataValuesCollection(dataValues))
                {
                    Key           = jtoken.GetValue("Key").ToObject <Guid>(),
                    Slug          = jtoken.SelectToken("Slug").ToString(),
                    TemplateId    = (int)j.SelectToken("TemplateId"),
                    CanBeRendered = bool.Parse(jtoken.SelectToken("CanBeRendered").ToString()),
                    CreateDate    = contentType.CreateDate,
                    UpdateDate    = contentType.UpdateDate
                };

                contents.Add(pvdc.ToProductVariantDetachedContentDisplay());
            }

            return(contents);
        }
Example #4
0
        /// <summary>
        /// Builds <see cref="IProductVariantDetachedContent"/>.
        /// </summary>
        /// <param name="dto">
        /// The dto.
        /// </param>
        /// <returns>
        /// The <see cref="IProductVariantDetachedContent"/>.
        /// </returns>
        public IProductVariantDetachedContent BuildEntity(ProductVariantDetachedContentDto dto)
        {
            var detachedContentType = _detachedContentTypeFactory.Value.BuildEntity(dto.DetachedContentType);

            var values = DetachedContentValuesSerializationHelper.Deserialize(dto.Values);

            var valuesCollection = new DetachedDataValuesCollection(values);

            var detachedContent = new ProductVariantDetachedContent(
                dto.ProductVariantKey,
                detachedContentType,
                dto.CultureName,
                valuesCollection)
            {
                Key           = dto.Key,
                Slug          = dto.Slug ?? string.Empty,
                TemplateId    = dto.TemplateId ?? 0,
                CanBeRendered = dto.CanBeRendered,
                CreateDate    = dto.CreateDate,
                UpdateDate    = dto.UpdateDate
            };

            detachedContent.ResetDirtyProperties();

            return(detachedContent);
        }