Example #1
0
        public static void Insert(BookTagViewModel target)
        {
            var dao = new BookTagDao();

            dao.Insert(target.ToEntity());
            s_logger.Debug($"INSERT BookTag:{target}");
        }
Example #2
0
 public static BookTag ToEntity(this BookTagViewModel obj)
 {
     return(new BookTag()
     {
         BookID = obj.BookID,
         TagID = obj.TagID,
     });
 }
Example #3
0
        public static void Delete(BookTagViewModel deleteEntity)
        {
            var dao = new BookTagDao();

            dao.Delete(new Dictionary <string, object>()
            {
                { "BookID", deleteEntity.BookID }, { "TagID", deleteEntity.TagID }
            });
        }
Example #4
0
        public static bool Exists(BookTagViewModel target)
        {
            var dao = new BookTagDao();

            return(dao.CountBy(new Dictionary <string, object>()
            {
                { "BookID", target.BookID }, { "TagID", target.TagID }
            }) > 0);
        }
Example #5
0
        private void TagBook(ITagManager tagMng)
        {
            foreach (var tagName in TagNames)
            {
                var tag = TagFacade.FindByTagName(tagName);
                Debug.Assert(tag != null);
                var newBookTag = new BookTagViewModel(_book, tag);

                BookTagFacade.Insert(newBookTag);
                tagMng.BookTagChains.Add(newBookTag);
            }
        }
Example #6
0
        public override void ConfigureTaskImplementation(AsyncTaskSequence sequence)
        {
            var bookTags = new IntermediateTableDao().FindAll().ToList();

            foreach (var chain in bookTags)
            {
                sequence.Add(() =>
                {
                    var newEntity = new BookTagViewModel(chain.BookID, chain.TagID);
                    if (!BookTagFacade.Exists(newEntity))
                    {
                        BookTagFacade.Insert(newEntity);
                    }
                });
            }
        }
Example #7
0
        public override void ConfigureTaskImplementation(AsyncTaskSequence sequence)
        {
            sequence.Add(new Task(() =>
            {
                if (TagFacade.Exists(TagName))
                {
                    _tag = TagFacade.FindByTagName(TagName);
                }
                else
                {
                    _tag = new TagViewModel(Guid.NewGuid(), TagName);
                    TagFacade.Insert(_tag);
                }
            }));

            sequence.Add(new Task(() =>
            {
                _images = new List <ImageViewModel>();
            }));

            foreach (var entry in Entries)
            {
                var book = entry as BookViewModel;
                if (book != null)
                {
                    _pages = PageFacade.FindByBookId(book.ID);

                    for (int i = 0; i < _pages.Count(); ++i)
                    {
                        var p = _pages.ElementAt(i);
                        sequence.Add(new Task(() =>
                        {
                            GetPropertyIfImageIsNull(ref p);
                            _images.Add(p.Image);
                        }));
                    }
                    sequence.Add(new Task(() =>
                    {
                        var newEntity = new BookTagViewModel(book, _tag);
                        if (!BookTagFacade.Exists(newEntity))
                        {
                            BookTagFacade.Insert(newEntity);
                        }
                    }));
                    continue;
                }

                var page = entry as PageViewModel;
                if (page != null)
                {
                    sequence.Add(new Task(() =>
                    {
                        GetPropertyIfImageIsNull(ref page);
                        _images.Add(page.Image);
                    }));

                    sequence.Add(new Task(() =>
                    {
                        var newEntity = new BookTagViewModel(page.BookID, _tag.ID);
                        if (!BookTagFacade.Exists(newEntity))
                        {
                            BookTagFacade.Insert(newEntity);
                        }
                    }));
                    continue;
                }

                var image = entry as ImageViewModel;
                if (image != null)
                {
                    sequence.Add(new Task(() =>
                    {
                        _images.Add(image);
                    }));

                    sequence.Add(new Task(() =>
                    {
                        var tempPage  = PageFacade.FindByImageId(image.ID);
                        var newEntity = new BookTagViewModel(tempPage.BookID, _tag.ID);
                        if (!BookTagFacade.Exists(newEntity))
                        {
                            BookTagFacade.Insert(newEntity);
                        }
                    }));
                    continue;
                }
            }

            sequence.Add(new Task(() =>
            {
                ImageTagFacade.BatchInsert(_tag, _images);
            }));

            sequence.Add(new Task(() =>
            {
                var chains = from x in _images
                             where TagManager.Value.Chains.Count(c => c.ImageID == x.ID && c.TagID == _tag.ID) == 0
                             select new ImageTagViewModel(x.ID, _tag);

                foreach (var chain in chains)
                {
                    TagManager.Value.Chains.Add(chain);
                }
            }));

            sequence.Add(new Task(() =>
            {
                if (!TagManager.Value.Tags.Contains(_tag))
                {
                    TagManager.Value.Tags.Add(_tag);
                }
            }));

            sequence.Add(new Task(() => TagManager.Value.SelectedEntityTags = TagManager.Value.GetCommonTags()));
            sequence.Add(new Task(() => TagManager.Value.ObserveSelectedEntityTags()));
        }
Example #8
0
        public override void ConfigureTaskImplementation(AsyncTaskSequence sequence)
        {
            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);
                            sequence.Add(new Task(() =>
                            {
                                GetPropertyIfImageIsNull(ref p);
                            }));
                            sequence.Add(new Task(() =>
                            {
                                Remove.ImageTagRemoving.Remove(TagManager.Value, p.Image, tagName);
                            }));
                        }

                        sequence.Add(new Task(() =>
                        {
                            var tag          = TagFacade.FindByTagName(tagName);
                            var deleteEntity = new BookTagViewModel(book.ID, tag.ID);
                            if (BookTagFacade.Exists(deleteEntity))
                            {
                                BookTagFacade.Delete(deleteEntity);
                            }
                        }));
                        continue;
                    }

                    var page = entry as PageViewModel;
                    if (page != null)
                    {
                        sequence.Add(new Task(() =>
                        {
                            GetPropertyIfImageIsNull(ref page);
                        }));
                        sequence.Add(new Task(() =>
                        {
                            Remove.ImageTagRemoving.Remove(TagManager.Value, page.Image, tagName);
                        }));

                        sequence.Add(new Task(() =>
                        {
                            var tag          = TagFacade.FindByTagName(tagName);
                            var deleteEntity = new BookTagViewModel(book.ID, tag.ID);

                            var pages = PageFacade.FindByBookId(page.BookID);
                            foreach (var p in pages)
                            {
                                if (p.ID.Equals(page.ID))
                                {
                                    continue;
                                }

                                var imageTags = ImageTagFacade.FindByImageId(p.ImageID);
                                foreach (var imageTag in imageTags)
                                {
                                    if (imageTag.TagID.Equals(deleteEntity.TagID))
                                    {
                                        return;
                                    }
                                }
                            }

                            if (BookTagFacade.Exists(deleteEntity))
                            {
                                BookTagFacade.Delete(deleteEntity);
                            }
                        }));
                        continue;
                    }

                    var image = entry as ImageViewModel;
                    if (image != null)
                    {
                        sequence.Add(new Task(() =>
                        {
                            Remove.ImageTagRemoving.Remove(TagManager.Value, page.Image, tagName);
                        }));

                        sequence.Add(new Task(() =>
                        {
                            var tag          = TagFacade.FindByTagName(tagName);
                            var deleteEntity = new BookTagViewModel(book.ID, tag.ID);

                            var parentPage = PageFacade.FindByImageId(image.ID);
                            var pages      = PageFacade.FindByBookId(parentPage.BookID);
                            foreach (var p in pages)
                            {
                                if (p.ID.Equals(parentPage.ID))
                                {
                                    continue;
                                }

                                var imageTags = ImageTagFacade.FindByImageId(p.ImageID);
                                foreach (var imageTag in imageTags)
                                {
                                    if (imageTag.TagID.Equals(deleteEntity.TagID))
                                    {
                                        return;
                                    }
                                }
                            }

                            if (BookTagFacade.Exists(deleteEntity))
                            {
                                BookTagFacade.Delete(deleteEntity);
                            }
                        }));
                        continue;
                    }
                }

                sequence.Add(new Task(() => TagManager.Value.SelectedEntityTags = TagManager.Value.GetCommonTags()));
                sequence.Add(new Task(() => TagManager.Value.ObserveSelectedEntityTags()));
                sequence.Add(new Task(() => TagManager.Value.ObserveTagCount()));
            }
        }