public IHttpActionResult GetProductVariations([FromBody] GetProductVariationsRequest request)
        {
            var product =
                CatalogLibrary.GetProduct(request.ProductSku);

            if (product.ProductType != ProductType.ProductFamily)
            {
                return(NotFound());
            }

            var variations = CatalogLibrary.GetVariants(product).Select(variant =>
            {
                var properties = variant
                                 .GetUserDefinedFields().Select(field => new ProductProperty()
                {
                    Name  = field.Key,
                    Value = field.Value.ToString()
                });

                return(new ProductVariation
                {
                    Sku = variant.Sku,
                    VariantSku = variant.VariantSku,
                    ProductName = variant.Name,
                    Properties = properties
                });
            }).ToList();

            return(Json(new { Variations = variations }));
        }
        public IHttpActionResult GetProductVariations([FromBody] GetProductVariationsRequest request)
        {
            var product = CatalogLibrary.GetProduct(request.ProductSku);

            var variations = product.Variants.Select(variant => new ProductVariation
            {
                Sku         = variant.Sku,
                VariantSku  = variant.VariantSku,
                ProductName = variant.Name,
                Properties  = variant.ProductProperties.Select(prop => new ProductProperty()
                {
                    Id    = prop.Id,
                    Name  = prop.ProductDefinitionField.Name,
                    Value = prop.Value
                })
            }).ToList();

            return(Json(new { Variations = variations }));
        }