예제 #1
0
        public bool SaveTagsToTagableEntity(ITagableEntity tagableEntity, ICollection<string> choosenTags)
        {
            if (choosenTags.Count > 0)
            {
                this.RemoveTagsFromTagableEntity(tagableEntity);
                var tags = this.GetTagsArray(choosenTags);

                foreach (var tag in tags)
                {
                    var dbTag = this.Data.Tags
                        .All()
                        .FirstOrDefault(tnsi => tnsi.Name.ToLower().Trim() == tag.ToLower().Trim());

                    if (dbTag == null)
                    {
                        dbTag = new Tag
                        {
                            Name = tag,
                        };

                        this.Data.Tags.Add(dbTag);
                        this.Data.SaveChanges();
                    }
                    else
                    {
                        this.Data.Tags.Update(dbTag);
                    }

                    this.SaveTagToTagableEntity(tagableEntity, dbTag);
                    this.Data.SaveChanges();
                }
            }
            return false;
        }
예제 #2
0
        private void RemoveTagsFromTagableEntity(ITagableEntity tagableEntity)
        {
            var entityIsAlbum = tagableEntity as Album;
            if (entityIsAlbum != null)
            {
                var album = this.Data.Albums.GetById(entityIsAlbum.Id);
                var tags = album.Tags;
                foreach (var tag in tags)
                {
                    tag.Albums.Remove(album);
                }
                album.Tags.Clear();
            }

            var entityIsArticle = tagableEntity as Article;
            if (entityIsArticle != null)
            {
                var article = this.Data.Articles.GetById(entityIsArticle.Id);
                var tags = article.Tags;
                foreach (var tag in tags)
                {
                    tag.Articles.Remove(article);
                }
                article.Tags.Clear();
            }

            var entityIsNSImage = tagableEntity as NSImage;
            if (entityIsNSImage != null)
            {
                var nsImage = this.Data.NSImages.GetById(entityIsNSImage.Id);
                var tags = nsImage.Tags;
                foreach (var tag in tags)
                {
                    tag.NSImages.Remove(nsImage);
                }
                nsImage.Tags.Clear();
            }

            this.Data.SaveChanges();
        }
예제 #3
0
 private void SaveTagToTagableEntity(ITagableEntity tagableEntity, Tag dbTag)
 {
     var entityIsAlbum = tagableEntity as Album;
     if (entityIsAlbum != null)
     {
         var album = this.Data.Albums.GetById(entityIsAlbum.Id);
         album.Tags.Add(dbTag);
         this.Data.Albums.Update(album);
     }
     var entityIsArticle = tagableEntity as Article;
     if (entityIsArticle != null)
     {
         var article = this.Data.Articles.GetById(entityIsArticle.Id);
         article.Tags.Add(dbTag);
         this.Data.Articles.Update(article);
     }
     var entityIsNSImage = tagableEntity as NSImage;
     if (entityIsNSImage != null)
     {
         var nsImage = this.Data.NSImages.GetById(entityIsNSImage.Id);
         nsImage.Tags.Add(dbTag);
         this.Data.NSImages.Update(nsImage);
     }
 }