Example #1
0
        /// <summary>
        /// The to product variant detached content.
        /// </summary>
        /// <param name="display">
        /// The display.
        /// </param>
        /// <param name="destination">
        /// The destination.
        /// </param>
        /// <returns>
        /// The <see cref="IProductVariantDetachedContent"/>.
        /// </returns>
        public static IProductVariantDetachedContent ToProductVariantDetachedContent(
            this ProductVariantDetachedContentDisplay display,
            IProductVariantDetachedContent destination)
        {
            destination.Slug          = display.Slug;
            destination.TemplateId    = display.TemplateId;
            destination.CanBeRendered = display.CanBeRendered;

            // Find any detached content items that should be removed
            var validPropertyTypeAliases = display.DetachedDataValues.Select(x => x.Key);
            var removers = destination.DetachedDataValues.Where(x => validPropertyTypeAliases.All(y => y != x.Key));

            foreach (var remove in removers)
            {
                destination.DetachedDataValues.RemoveValue(remove.Key);
            }

            foreach (var item in display.DetachedDataValues)
            {
                if (!item.Key.IsNullOrWhiteSpace())
                {
                    destination.DetachedDataValues.AddOrUpdate(item.Key, item.Value, (x, y) => item.Value);
                }
            }

            return(destination);
        }
Example #2
0
        /// <summary>
        /// Ensures the slug is valid.
        /// </summary>
        /// <param name="detachedContent">
        /// The detached content.
        /// </param>
        /// <param name="slug">
        /// The slug.
        /// </param>
        /// <returns>
        /// A slug incremented with a count if necessary.
        /// </returns>
        private string EnsureSlug(IProductVariantDetachedContent detachedContent, string slug)
        {
            var count = Database.ExecuteScalar <int>("SELECT COUNT(slug) FROM [merchProductVariantDetachedContent] WHERE [merchProductVariantDetachedContent].[slug] = @Slug AND [merchProductVariantDetachedContent].[productVariantKey] != @Pvk", new { @Slug = slug, @Pvk = detachedContent.ProductVariantKey });

            if (count > 0)
            {
                slug = string.Format("{0}-{1}", slug, count + 1);
            }
            return(slug);
        }
        /// <summary>
        /// The to product variant detached content.
        /// </summary>
        /// <param name="display">
        /// The display.
        /// </param>
        /// <param name="destination">
        /// The destination.
        /// </param>
        /// <returns>
        /// The <see cref="IProductVariantDetachedContent"/>.
        /// </returns>
        public static IProductVariantDetachedContent ToProductVariantDetachedContent(
            this ProductVariantDetachedContentDisplay display,
            IProductVariantDetachedContent destination)
        {
            destination.Slug          = display.Slug;
            destination.TemplateId    = display.TemplateId;
            destination.CanBeRendered = display.CanBeRendered;

            foreach (var item in display.DetachedDataValues)
            {
                destination.DetachedDataValues.AddOrUpdate(item.Key, item.Value, (x, y) => item.Value);
            }

            return(destination);
        }
Example #4
0
 /// <summary>
 /// The build detached content.
 /// </summary>
 /// <param name="productVariantKey">
 /// The product variant key.
 /// </param>
 /// <param name="name">
 /// The name.
 /// </param>
 /// <param name="originalDetachedContent">
 /// The original detached content.
 /// </param>
 /// <returns>
 /// The <see cref="IProductVariantDetachedContent"/>.
 /// </returns>
 private IProductVariantDetachedContent BuildDetachedContent(
     Guid productVariantKey,
     string name,
     IProductVariantDetachedContent originalDetachedContent)
 {
     return(new ProductVariantDetachedContent(
                productVariantKey,
                originalDetachedContent.DetachedContentType,
                originalDetachedContent.CultureName,
                new DetachedDataValuesCollection(originalDetachedContent.DetachedDataValues.ToArray()))
     {
         Slug = PathHelper.ConvertToSlug(name),
         CanBeRendered = originalDetachedContent.CanBeRendered,
         TemplateId = originalDetachedContent.TemplateId,
     });
 }
 /// <summary>
 /// The build detached content.
 /// </summary>
 /// <param name="productVariantKey">
 /// The product variant key.
 /// </param>
 /// <param name="name">
 /// The name.
 /// </param>
 /// <param name="originalDetachedContent">
 /// The original detached content.
 /// </param>
 /// <returns>
 /// The <see cref="IProductVariantDetachedContent"/>.
 /// </returns>
 private IProductVariantDetachedContent BuildDetachedContent(
     Guid productVariantKey,
     string name,
     IProductVariantDetachedContent originalDetachedContent)
 {
    return new ProductVariantDetachedContent(
         productVariantKey,
         originalDetachedContent.DetachedContentType,
         originalDetachedContent.CultureName, 
         new DetachedDataValuesCollection(originalDetachedContent.DetachedDataValues.ToArray()))
                               {
                                   Slug = PathHelper.ConvertToSlug(name),
                                   CanBeRendered = originalDetachedContent.CanBeRendered,
                                   TemplateId = originalDetachedContent.TemplateId,
                               };
 }
        /// <summary>
        /// The save detached content.
        /// </summary>
        /// <param name="detachedContent">
        /// The detached content.
        /// </param>
        /// <param name="slug">
        /// The generated slug
        /// </param>
        internal void SaveDetachedContent(IProductVariantDetachedContent detachedContent, string slug)
        {
            var factory = new ProductVariantDetachedContentFactory();

            if (!detachedContent.HasIdentity)
            {
                ((Entity)detachedContent).AddingEntity();
                detachedContent.Slug = this.EnsureSlug(detachedContent, slug);
                var dto = factory.BuildDto(detachedContent);
                Database.Insert(dto);
                detachedContent.Key = dto.Key;
            }
            else
            {
                ((Entity)detachedContent).UpdatingEntity();
                detachedContent.Slug = this.EnsureSlug(detachedContent, detachedContent.Slug);
                var dto = factory.BuildDto(detachedContent);

                const string Update =
                    "UPDATE [merchProductVariantDetachedContent] SET [merchProductVariantDetachedContent].[detachedContentTypeKey] = @Dctk, [merchProductVariantDetachedContent].[templateId] = @Tid, [merchProductVariantDetachedContent].[slug] = @Slug, [merchProductVariantDetachedContent].[values] = @Vals, [merchProductVariantDetachedContent].[canBeRendered] = @Cbr, [merchProductVariantDetachedContent].[updateDate] = @Ud WHERE [merchProductVariantDetachedContent].[cultureName] = @Cn AND [merchProductVariantDetachedContent].[productVariantKey] = @Pvk";


                Database.Execute(
                    Update,
                    new
                {
                    @Dctk = dto.DetachedContentTypeKey,
                    @Tid  = dto.TemplateId,
                    @Slug = dto.Slug,
                    @Vals = dto.Values,
                    @Cbr  = dto.CanBeRendered,
                    @Ud   = dto.UpdateDate,
                    @Cn   = dto.CultureName,
                    @Pvk  = dto.ProductVariantKey
                });
            }
        }
Example #7
0
 /// <summary>
 /// The to product variant detached content display.
 /// </summary>
 /// <param name="detachedContent">
 /// The detached content.
 /// </param>
 /// <returns>
 /// The <see cref="ProductVariantDetachedContentDisplay"/>.
 /// </returns>
 public static ProductVariantDetachedContentDisplay ToProductVariantDetachedContentDisplay(
     this IProductVariantDetachedContent detachedContent)
 {
     return(AutoMapper.Mapper.Map <ProductVariantDetachedContentDisplay>(detachedContent));
 }
        /// <summary>
        /// The to product variant detached content.
        /// </summary>
        /// <param name="display">
        /// The display.
        /// </param>
        /// <param name="destination">
        /// The destination.
        /// </param>
        /// <returns>
        /// The <see cref="IProductVariantDetachedContent"/>.
        /// </returns>
        public static IProductVariantDetachedContent ToProductVariantDetachedContent(
            this ProductVariantDetachedContentDisplay display,
            IProductVariantDetachedContent destination)
        {
            destination.Slug = display.Slug;
            destination.TemplateId = display.TemplateId;
            destination.CanBeRendered = display.CanBeRendered;

            // Find any detached content items that should be removed
            var validPropertyTypeAliases = display.DetachedDataValues.Select(x => x.Key);
            var removers = destination.DetachedDataValues.Where(x => validPropertyTypeAliases.All(y => y != x.Key));
            foreach (var remove in removers)
            {
                destination.DetachedDataValues.RemoveValue(remove.Key);
            }

            foreach (var item in display.DetachedDataValues)
            {
                if (!item.Key.IsNullOrWhiteSpace())
                destination.DetachedDataValues.AddOrUpdate(item.Key, item.Value, (x, y) => item.Value);
            }

            return destination;
        }
        /// <summary>
        /// The to product variant detached content.
        /// </summary>
        /// <param name="display">
        /// The display.
        /// </param>
        /// <param name="destination">
        /// The destination.
        /// </param>
        /// <returns>
        /// The <see cref="IProductVariantDetachedContent"/>.
        /// </returns>
        public static IProductVariantDetachedContent ToProductVariantDetachedContent(
            this ProductVariantDetachedContentDisplay display,
            IProductVariantDetachedContent destination)
        {
            destination.Slug = display.Slug;
            destination.TemplateId = display.TemplateId;
            destination.CanBeRendered = display.CanBeRendered;

            foreach (var item in display.DetachedDataValues)
            {
                destination.DetachedDataValues.AddOrUpdate(item.Key, item.Value, (x, y) => item.Value);
            }

            return destination;
        }
 /// <summary>
 /// The delete detached content.
 /// </summary>
 /// <param name="detachedContent">
 /// The detached content.
 /// </param>
 internal void DeleteDetachedContent(IProductVariantDetachedContent detachedContent)
 {
     Database.Execute(
         "DELETE [merchProductVariantDetachedContent] WHERE pk = @Key",
         new { @Key = detachedContent.Key });
 }