private VariationsCollection GetVariationsByAttributes(Product parentProduct, Variations variations) { VariationsCollection collection = null; if (variations != null) { var config = ConfigLoader.Get <ProductVariationsConfig>(); var group = GetGroup(config, parentProduct, variations); if (group != null) { // GUID changes on every call - use a value that is driven off the data //var id = Guid.NewGuid().ToString("N"); var sb = new StringBuilder(); sb.Append(parentProduct.Id); foreach (var p in variations.Product) { sb.Append('-'); sb.Append(p.Id); } var id = sb.ToString(); var result = GetVariationsByAttributes(variations, id, group.Variations, 0, new List <string>(), new List <string>()); if (result != null) { collection = new VariationsCollection { Id = id, Count = group.Variations.Length, Levels = @group.Variations.Select(v => v.Id + "_" + id).ToArray(), Variations = result }; } } } return(collection); }
public static VariationsCollection.Variation FirstOrDefault(this VariationsCollection collection, string levelId) { return(FirstOrDefault(collection.Variations, levelId)); }