/// <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); }
/// <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); }
/// <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); }