public static List <Task> GenerateRemoveImageTagTasks(ITagManager tagManager, IEnumerable <EntryViewModel> entries, params string[] tagNames) { List <Task> tasks = new List <Task>(); foreach (var tagName in tagNames) { foreach (var entry in entries) { var book = entry as BookViewModel; if (book != null) { var pages = PageFacade.FindByBookId(book.ID); for (int i = 0; i < pages.Count(); ++i) { var p = pages.ElementAt(i); tasks.Add(new Task(() => { GetPropertyIfImageIsNull(ref p); })); tasks.Add(new Task(() => { Remove.ImageTagRemoving.Remove(tagManager, p.Image, tagName); })); } continue; } var page = entry as PageViewModel; if (page != null) { tasks.Add(new Task(() => { GetPropertyIfImageIsNull(ref page); })); tasks.Add(new Task(() => { Remove.ImageTagRemoving.Remove(tagManager, page.Image, tagName); })); continue; } var image = entry as ImageViewModel; if (image != null) { tasks.Add(new Task(() => { Remove.ImageTagRemoving.Remove(tagManager, page.Image, tagName); })); continue; } } tasks.Add(new Task(() => tagManager.SelectedEntityTags = tagManager.GetCommonTags())); tasks.Add(new Task(() => tagManager.ObserveSelectedEntityTags())); tasks.Add(new Task(() => tagManager.ObserveTagCount())); } return(tasks); }
public static List <Task> GenerateAddImageTagTasks(ITagManager tagManager, IEnumerable <EntryViewModel> entries, string tagName) { List <Task> tasks = new List <Task>(); var ita = new ImageTagAdding(); tasks.Add(new Task(() => { if (TagFacade.Exists(tagName)) { ita._tag = TagFacade.FindByTagName(tagName); } else { ita._tag = new TagViewModel(Guid.NewGuid(), tagName); TagFacade.Insert(ita._tag); } })); tasks.Add(new Task(() => { ita._images = new List <ImageViewModel>(); })); foreach (var entry in entries) { var book = entry as BookViewModel; if (book != null) { ita._pages = PageFacade.FindByBookId(book.ID); for (int i = 0; i < ita._pages.Count(); ++i) { var p = ita._pages.ElementAt(i); tasks.Add(new Task(() => { GetPropertyIfImageIsNull(ref p); ita._images.Add(p.Image); })); } continue; } var page = entry as PageViewModel; if (page != null) { tasks.Add(new Task(() => { GetPropertyIfImageIsNull(ref page); ita._images.Add(page.Image); })); continue; } var image = entry as ImageViewModel; if (image != null) { tasks.Add(new Task(() => { ita._images.Add(image); })); continue; } } tasks.Add(new Task(() => { ImageTagFacade.BatchInsert(ita._tag, ita._images); })); tasks.Add(new Task(() => { var chains = from x in ita._images where tagManager.Chains.Count(c => c.ImageID == x.ID && c.TagID == ita._tag.ID) == 0 select new ImageTagViewModel(x.ID, ita._tag); foreach (var chain in chains) { tagManager.Chains.Add(chain); } })); tasks.Add(new Task(() => { if (!tagManager.Tags.Contains(ita._tag)) { tagManager.Tags.Add(ita._tag); } })); tasks.Add(new Task(() => tagManager.SelectedEntityTags = tagManager.GetCommonTags())); tasks.Add(new Task(() => tagManager.ObserveSelectedEntityTags())); return(tasks); }