private static bool IsMatch(ProductVariationsConfig.VariationGroup group, Variations variations)
        {
            // Here's where we need to make sure that each attribute has at least two distinct values
            // return group.Variations.All(v => !string.IsNullOrEmpty(variations.Products[0].CustomAttributes.ValueByName<string>(v.AttributeName, null)));
            if (variations == null || variations.Product.Length <= 1)
            {
                return(false);
            }

            return(@group.Variations.All(v =>
                                         !variations.Product.Any(p => String.IsNullOrEmpty(p.CustomAttributes.ValueByName <string>(v.AttributeName, null))) &&
                                         variations.Product
                                         .Select(p => p.CustomAttributes.ValueByName <string>(v.AttributeName, null))
                                         .Distinct()
                                         .Count() >= 2));
        }
        private ProductVariationsConfig.VariationGroup GetGroup(ProductVariationsConfig config, Product parentProduct, Variations variations)
        {
            ProductVariationsConfig.VariationGroup result = null;

            if (variations != null && variations.Product.Length > 1)
            {
                result = config.Groups.FirstOrDefault(g => IsMatch(g, variations));
                if (result == null)
                {
                    _logger.Warn("A variation group could not be found for a product with multiple variations productId: {0}"
                                 , parentProduct.Id);
                }
            }

            return(result);
        }