public static async Task DenormalizeAsync(this ITagService tagService, DomainId appId, DomainId schemaId, Schema schema, params ContentData[] datas) { Guard.NotNull(tagService, nameof(tagService)); Guard.NotNull(schema, nameof(schema)); var tagsValues = new HashSet <string>(); var tagsArrays = new List <JsonArray>(); GetValues(schema, tagsValues, tagsArrays, datas); if (tagsValues.Count > 0) { var denormalized = await tagService.DenormalizeTagsAsync(appId, TagGroups.Schemas(schemaId), tagsValues); foreach (var array in tagsArrays) { for (var i = 0; i < array.Count; i++) { if (denormalized.TryGetValue(array[i].ToString(), out var result)) { array[i] = JsonValue.Create(result); } } } } }
public static async Task NormalizeAsync(this ITagService tagService, DomainId appId, DomainId schemaId, Schema schema, ContentData newData, ContentData?oldData) { Guard.NotNull(tagService, nameof(tagService)); Guard.NotNull(schema, nameof(schema)); Guard.NotNull(newData, nameof(newData)); var newValues = new HashSet <string>(); var newArrays = new List <JsonArray>(); var oldValues = new HashSet <string>(); var oldArrays = new List <JsonArray>(); GetValues(schema, newValues, newArrays, newData); if (oldData != null) { GetValues(schema, oldValues, oldArrays, oldData); } if (newValues.Count > 0) { var normalized = await tagService.NormalizeTagsAsync(appId, TagGroups.Schemas(schemaId), newValues, oldValues); foreach (var array in newArrays) { for (var i = 0; i < array.Count; i++) { if (normalized.TryGetValue(array[i].ToString(), out var result)) { array[i] = JsonValue.Create(result); } } } } }