Exemple #1
0
        public List <Tag> AddTagsForBlog(int blogid, string[] tags, string addby)
        {
            List <Tag> AddedTags = new List <Tag>();
            var        tagDict   = _db.Tags.Where(tt => tags.Contains(tt.TagName)).ToDictionary(t => t.TagName.ToLower(), Extensions.SqlStringComparer.Instance);

            foreach (string tag in tags)
            {
                Tag t;
                if (!tagDict.TryGetValue(tag, out t))
                {
                    t = new Tag {
                        TagName = tag
                    };
                }
                TagsInBlog tib = new TagsInBlog {
                    BlogID = blogid
                };
                tib.tag   = t;
                tib.AddBy = addby;
                _db.TagsInBlogs.Add(tib);
                AddedTags.Add(t);
            }
            _db.SaveChanges();
            return(AddedTags);
        }
Exemple #2
0
 public static bool IsRemovable(this TagsInBlog tib, string Author, string User, bool IsAdmin, IEnumerable <int> BlackListID)
 {
     return(!BlackListID.Contains(tib.TagID) && (string.IsNullOrEmpty(tib.AddBy) ||
                                                 Author.Equals(User, StringComparison.OrdinalIgnoreCase) ||
                                                 !tib.AddBy.Equals(Author, StringComparison.OrdinalIgnoreCase) ||
                                                 IsAdmin));
 }
Exemple #3
0
        public List <Tag> SetTagsForBlog(int blogid, string[] tags, string user)
        {
            bool hasdelete   = false;
            var  tagcurrent  = _db.TagsInBlogs.Include("tag").Where(i => i.BlogID == blogid).ToList();
            var  tagtodel    = tagcurrent.Where(a => !tags.Contains(a.tag.TagName, SqlStringComparer.Instance));
            var  tagtoadd    = tags.Except(tagcurrent.Select(a => a.tag.TagName), SqlStringComparer.Instance).ToList();
            var  UpdatedTags = tagcurrent.Except(tagtodel).Select(tib => tib.tag).ToList();

            foreach (var tib in tagtodel)
            {
                _db.TagHistories.Add(new TagHistory {
                    AddBy = tib.AddBy, BlogID = blogid, DeleteBy = user, TagName = tib.tag.TagName, Time = DateTime.Now
                });
                _db.TagsInBlogs.Remove(tib);
                hasdelete = true;
            }
            var ExistingTags = _db.Tags.Where(t => tagtoadd.Contains(t.TagName)).ToDictionary(t => t.TagName, SqlStringComparer.Instance);

            foreach (var tag in tagtoadd)
            {
                if (!ExistingTags.TryGetValue(tag, out Tag t))
                {
                    t = new Tag {
                        TagName = tag
                    };
                }
                TagsInBlog tib = new TagsInBlog
                {
                    tag    = t,
                    BlogID = blogid,
                    AddBy  = user
                };
                _db.TagsInBlogs.Add(tib);
                UpdatedTags.Add(tib.tag);
            }
            _db.SaveChanges();
            if (hasdelete)
            {
                _db.Database.ExecuteSqlCommand("Delete From Tags Where TagID not in ((Select TagID from TagsInBlogs) union (Select TagID from Topics))");
            }
            return(UpdatedTags);
        }