private void SyncImages(TagsCollectionBase tags, string[] images) { var tagsToRemove = tags.Where(t => t.Key.StartsWith(FeatureAttributes.IMAGE_URL) && images.Contains(t.Value) == false).ToArray(); foreach (var tag in tagsToRemove) { tags.RemoveKeyValue(tag); } var imagesToAdd = images.Where(i => tags.Any(t => t.Value == i) == false).ToList(); foreach (var imageUrl in imagesToAdd) { if (!tags.ContainsKey(FeatureAttributes.IMAGE_URL)) { tags[FeatureAttributes.IMAGE_URL] = imageUrl; continue; } int imageIndex = 1; while (tags.ContainsKey(FeatureAttributes.IMAGE_URL + imageIndex)) { imageIndex++; } tags[FeatureAttributes.IMAGE_URL + imageIndex] = imageUrl; } }
private void RemoveEmptyTags(TagsCollectionBase tags) { for (int i = tags.Count - 1; i >= 0; i--) { var currentTag = tags.ElementAt(i); if (string.IsNullOrWhiteSpace(currentTag.Value)) { tags.RemoveKeyValue(currentTag); } } }
private void RemoveTagsByIcon(TagsCollectionBase tags, string icon) { var tagsList = _tagsHelper.FindTagsForIcon(icon); if (tagsList.Any() == false) { return; } foreach (var keyValuePair in tagsList) { var tag = tags.FirstOrDefault(t => t.Key == keyValuePair.Key && t.Value == keyValuePair.Value); if (tag.Equals(default(Tag)) == false) { tags.RemoveKeyValue(tag); // removing only one matching tag return; } } }