public ManageSubProjectController(UsersAccessRepository usersAccessRepository, SubProjectRepository subProjectRepository, ProjectRepository projectRepository, KeywordsRepository keywordsRepository) : base(usersAccessRepository) { _subProjectRepository = subProjectRepository; _projectRepository = projectRepository; _keywordsRepository = keywordsRepository; }
public ManageKeywordsController(KeywordsRepository keywordsRepository, UsersAccessRepository usersAccessRepository) : base(usersAccessRepository) { _keywordsRepository = keywordsRepository; }
/// <summary> /// This method is called to add or remove Keyword from article /// </summary> public void AddRemoveKeywords(string keywords, int infoID) { UnitOfWork unitOfWork = new UnitOfWork(); KeywordsRepository keywordsRepository = new KeywordsRepository(unitOfWork); InfoRepository infoRepository = new InfoRepository(unitOfWork); Info info = infoRepository.GetByID(infoID); List<int> KeywordsIDList = new List<int>(); if (keywords != null) { string[] keywordsArray = keywords.Split(','); foreach (var keywordInput in keywordsArray) { string value = keywordInput.Trim(); value = Regex.Replace(value, @"\s+", " "); Keyword keyword = keywordsRepository.GetAll(filter: x => x.Value == value).FirstOrDefault(); if (keyword == null) { if (value != string.Empty) { keyword = new Keyword(); keyword.Value = value; keywordsRepository.Save(keyword); KeywordsIDList.Add(keyword.ID); } } else { KeywordsIDList.Add(keyword.ID); } } } List<int> currentArticleKeywordsID = new List<int>(); info.Keywords = info.Keywords == null ? info.Keywords = new List<Keyword>() : info.Keywords; try { foreach (var item in info.Keywords) { currentArticleKeywordsID.Add(item.ID); } IEnumerable<int> removedKeywordsID = currentArticleKeywordsID.Except(KeywordsIDList); foreach (Keyword keyword in info.Keywords.ToList().Where(x => removedKeywordsID.Any(k => k == x.ID))) { keyword.Info.Remove(info); keywordsRepository.Save(keyword); } IEnumerable<int> addKeywordToArticle = KeywordsIDList.Except(currentArticleKeywordsID); foreach (var keyID in addKeywordToArticle) { Keyword keyword = keywordsRepository.GetByID(keyID); keyword.Info = keyword.Info == null ? new List<Info>() : keyword.Info; keyword.Info.Add(info); keywordsRepository.Save(keyword); } unitOfWork.Commit(); } catch (Exception ex) { unitOfWork.RollBack(); throw ex; } }