Example #1
0
        public void UpdateLinkItemKeywords(Item item, string keywordsData)
        {
            if (keywordsData == null)
            {
                return;
            }

            var keywords = keywordsData.Split(',').ToList().Select(k => k.Trim().ToLower()).ToArray();

            foreach (var keyword in keywords)
            {
                if (!_context.Keywords.Any(k => k.Word == keyword))
                {
                    var newKeyword = new Keyword()
                    {
                        Word = keyword
                    };
                    _context.Keywords.Add(newKeyword);
                }
            }
            _context.SaveChanges();

            var keywordIds = _context.Keywords.Where(k => keywords.Contains(k.Word)).Select(k => k.Id).ToList();

            var linkToRemove = _context.ItemKeywords.Where(ik => ik.ItemId == item.Id && !keywordIds.Contains(ik.KeywordId));

            _context.ItemKeywords.RemoveRange(linkToRemove);

            var existingLinks = _context.ItemKeywords.Where(ic => ic.ItemId == item.Id).Select(ic => ic.KeywordId).ToArray();

            foreach (var keywordId in keywordIds)
            {
                if (!existingLinks.Contains(keywordId))
                {
                    var itemKeywordLink = new ItemKeyword();
                    itemKeywordLink.KeywordId = keywordId;
                    itemKeywordLink.ItemId    = item.Id;
                    _context.ItemKeywords.Add(itemKeywordLink);
                }
            }
            _context.SaveChanges();
        }
Example #2
0
        void ImportItemKeywords(Models.Item item, IEnumerable <String> keywords)
        {
            foreach (var word in keywords)
            {
                var keyword = _context.Keywords.SingleOrDefault(k => k.Word == word);
                if (keyword == null)
                {
                    keyword      = new Keyword();
                    keyword.Word = word;
                    _context.Keywords.Add(keyword);
                    _context.SaveChanges();
                }

                var ItemKeyword = _context.ItemKeywords.SingleOrDefault(ic => ic.ItemId == item.Id && ic.KeywordId == keyword.Id);
                if (ItemKeyword == null)
                {
                    ItemKeyword           = new ItemKeyword();
                    ItemKeyword.ItemId    = item.Id;
                    ItemKeyword.KeywordId = keyword.Id;
                    _context.ItemKeywords.Add(ItemKeyword);
                }
                _context.SaveChanges();
            }
        }