コード例 #1
0
        public ActionResult Edit(int id)
        {
            News dbNews = _newsRepository.GetById(id);

            #region Tag
            var pullTags = dbNews.Tags.Select(x => x.TagName).ToArray();

            NewsTag newsTag = new NewsTag
            {
                News     = dbNews,
                Tags     = _tagRepository.GetAll(),
                PullTags = pullTags
            };

            StringBuilder strBuilder = new StringBuilder();
            foreach (var tag in newsTag.PullTags)
            {
                strBuilder.Append(tag);
                strBuilder.Append(",");
            }
            newsTag.TagName = strBuilder.ToString();
            #endregion

            if (dbNews == null)
            {
                throw new Exception("News not found");
            }
            else
            {
                ListCategories();
                return(View(newsTag));
            }
        }
コード例 #2
0
        //private void CommentData(News news)
        //{
        //    var allTags = _context.Tag;
        //    var instructorCourses = new HashSet<int>(news.Comment.Select(c => c.UserId));
        //    var viewModel = new List<NewsTagView>();
        //    foreach (var tag in allTags)
        //    {
        //        viewModel.Add(new NewsTagView
        //        {
        //            TagID = tag.TagId,
        //            TagName = tag.TagName,
        //            Checked = instructorCourses.Contains(tag.TagId)
        //        });
        //    }
        //    ViewData["Tags"] = viewModel;
        //}

        //private void ChannelsDropDownList(object selected = null)
        //{
        //    var query = from d in _context.Channel
        //                           select d;
        //    ViewBag.Channel = new SelectList(query.AsNoTracking(), "ChannelId", "ChannelName", selected);
        //}

        private void UpdateNewsTags(string[] selected, News newsToUpdate)
        {
            if (selected == null)
            {
                newsToUpdate.NewsTag = new List <NewsTag>();
                return;
            }

            var selectedHS = new HashSet <string>(selected);
            var newsTag    = new HashSet <int>
                                 (newsToUpdate.NewsTag.Select(c => c.Tag.TagId));

            foreach (var tag in _context.Tag)
            {
                if (selectedHS.Contains(tag.TagId.ToString()))
                {
                    if (!newsTag.Contains(tag.TagId))
                    {
                        newsToUpdate.NewsTag.Add(new NewsTag {
                            NewsId = newsToUpdate.NewsId, TagId = tag.TagId
                        });
                    }
                }
                else
                {
                    if (newsTag.Contains(tag.TagId))
                    {
                        NewsTag tagToRemove = newsToUpdate.NewsTag.FirstOrDefault(i => i.TagId == tag.TagId);
                        _context.Remove(tagToRemove);
                    }
                }
            }
        }
コード例 #3
0
 public List <NewsPost> Get(NewsTag tag)
 {
     return(_context.NewsPosts
            .Include(p => p.Author)
            .Where(n => n.NewsTag == tag)
            .ToList());
 }
コード例 #4
0
        public async Task <IActionResult> PutNewsTag(int id, NewsTag newsTag)
        {
            if (id != newsTag.TagId)
            {
                return(BadRequest());
            }

            _context.Entry(newsTag).State = EntityState.Modified;

            try
            {
                await _context.SaveChangesAsync();
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!NewsTagExists(id))
                {
                    return(NotFound());
                }
                else
                {
                    throw;
                }
            }

            return(NoContent());
        }
コード例 #5
0
        public async Task AddToTagAsync(News news, string tagName)
        {
            if (news == null)
            {
                throw new ArgumentNullException(nameof(news));
            }
            if (string.IsNullOrWhiteSpace(tagName))
            {
                throw new ArgumentException("Value cannot be null or empty. Null or empty error message.", nameof(tagName));
            }

            var newsTags = dbContext.NewsTags;
            var tags     = dbContext.Tags;

            var tagEntity = await tags.SingleOrDefaultAsync(t => t.Title.ToUpper() == tagName.ToUpper());

            if (tagEntity == null)
            {
                tagEntity = new Tag {
                    Title = tagName
                };
                tags.Add(tagEntity);
            }

            var nt = new NewsTag {
                NewsId = news.Id, TagId = tagEntity.Id
            };
            await newsTags.AddAsync(nt);
        }
コード例 #6
0
        public void Add(NewsViewModel viewModel)
        {
            viewModel = Tags(viewModel);
            var result   = mapper.Map <News>(viewModel);
            var category = unitOfWork.Get <Category>(result.CategoryId.GetValueOrDefault());

            result.Category = category;
            var author = unitOfWork.Get <User>(result.AuthorId.GetValueOrDefault());

            result.Author = author;
            unitOfWork.Add(result);
            result.NewsTags = new List <NewsTag>();
            if (viewModel.TagsIds != null)
            {
                foreach (int tagId in viewModel.TagsIds)
                {
                    var newsTag = new NewsTag()
                    {
                        NewsId = result.Id, TagId = tagId
                    };
                    result.NewsTags.Add(newsTag);

                    unitOfWork.Add <NewsTag>(newsTag);
                }
            }
            unitOfWork.SaveChanges();
        }
コード例 #7
0
        public ActionResult DeleteConfirmed(int id)
        {
            NewsTag newsTag = db.NewsTags.Find(id);

            db.NewsTags.Remove(newsTag);
            db.SaveChanges();
            return(RedirectToAction("Index"));
        }
コード例 #8
0
 private void CreateNewsTag(NewsTag newsTag)
 {
     using (var unitOfWork = new UnitOfWork(new DbContextFactory <NesDbContext>()))
     {
         unitOfWork.GetRepository <NewsTag>().Create(newsTag);
         unitOfWork.Save();
     }
 }
コード例 #9
0
ファイル: NewsController.cs プロジェクト: DUNDERTRiX/NewsApp
        public IActionResult Add([FromBody] AddNewsViewModel newsItem)
        {
            if (newsItem == null)
            {
                return(BadRequest("News is null"));
            }

            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            newsItem.News.CreatedDate = DateTime.Now;
            newsItem.News.UpdatedDate = DateTime.Now;

            if (newsItem.News.Category?.Id != null)
            {
                Category c = _categoryRepository.GetById((int)newsItem.News.Category.Id);
                newsItem.News.Category = c;
            }

            // Förhindra att ny kategori skapas om ingen anges
            if (newsItem.News.Category?.Id == null)
            {
                newsItem.News.Category = null;
            }


            //creates all tags and the connection between tags and news
            News thisNews = _newsRepository.Add(newsItem.News);

            foreach (var tag in newsItem.Tags)
            {
                if (tag.Id == 0)
                {
                    var newTag        = _tagRepository.Create(tag);
                    var tagConnection = new NewsTag {
                        News = thisNews, NewsId = thisNews.Id, Tag = newTag, TagId = newTag.Id
                    };
                    thisNews.NewsTags.Add(tagConnection);
                }
                else
                {
                    var alreadyAddedTag = _tagRepository.GetById(tag.Id);
                    var tagConnection   = new NewsTag {
                        News = thisNews, NewsId = thisNews.Id, Tag = alreadyAddedTag
                    };
                    thisNews.NewsTags.Add(tagConnection);
                }
            }



            //updates the news to add the connection between tags and this news
            _newsRepository.Update(thisNews);

            return(Ok());
        }
コード例 #10
0
ファイル: NewsDao.cs プロジェクト: cuongnt83it/THPTNgoQuyen
        public void InsertNewsTag(long newsId, string tagId)
        {
            var newsTag = new NewsTag();

            newsTag.NewsID = newsId;
            newsTag.TagID  = tagId;
            db.NewsTags.Add(newsTag);
            db.SaveChanges();
        }
コード例 #11
0
        /// <summary>
        /// Update news tags
        /// </summary>
        /// <param name="news">News for update</param>
        /// <param name="newsTags">News tags</param>
        public virtual void UpdateNewsTags(NewsItem news, string[] newsTags)
        {
            if (news == null)
            {
                throw new ArgumentNullException("news");
            }

            //news tags
            var existingNewsTags = news.NewsTags.ToList();
            var newsTagsToRemove = new List <NewsTag>();

            foreach (var existingNewsTag in existingNewsTags)
            {
                var found = false;
                foreach (var newNewsTag in newsTags)
                {
                    if (existingNewsTag.Name.Equals(newNewsTag, StringComparison.InvariantCultureIgnoreCase))
                    {
                        found = true;
                        break;
                    }
                }
                if (!found)
                {
                    newsTagsToRemove.Add(existingNewsTag);
                }
            }
            foreach (var newsTag in newsTagsToRemove)
            {
                news.NewsTags.Remove(newsTag);
                _newsService.UpdateNews(news);
            }
            foreach (var newsTagName in newsTags)
            {
                NewsTag newsTag;
                var     newsTag2 = GetNewsTagByName(newsTagName);
                if (newsTag2 == null)
                {
                    //add new news tag
                    newsTag = new NewsTag
                    {
                        Name = newsTagName
                    };
                    InsertNewsTag(newsTag);
                }
                else
                {
                    newsTag = newsTag2;
                }
                if (!news.NewsTagExists(newsTag.Id))
                {
                    news.NewsTags.Add(newsTag);
                    _newsService.UpdateNews(news);
                }
            }
        }
コード例 #12
0
 public ActionResult Edit([Bind(Include = "TagId,TagName")] NewsTag newsTag)
 {
     if (ModelState.IsValid)
     {
         db.Entry(newsTag).State = EntityState.Modified;
         db.SaveChanges();
         return(RedirectToAction("Index"));
     }
     return(View(newsTag));
 }
コード例 #13
0
 public ActionResult Edit(NewsTag newsTag)
 {
     if (ModelState.IsValid)
     {
         db.Entry(newsTag).State = EntityState.Modified;
         db.SaveChanges();
         return(RedirectToAction("Index", "NewsTag"));
     }
     return(View());
 }
コード例 #14
0
        public ActionResult Create([Bind(Include = "TagId,TagName")] NewsTag newsTag)
        {
            if (ModelState.IsValid)
            {
                db.NewsTags.Add(newsTag);
                db.SaveChanges();
                return(RedirectToAction("Index"));
            }

            return(View(newsTag));
        }
コード例 #15
0
        public ActionResult Create(NewsTag newsTag)
        {
            if (ModelState.IsValid)
            {
                db.NewsTags.Add(newsTag);
                db.SaveChanges();

                return(RedirectToAction("Index", "NewsTag"));
            }

            return(View());
        }
コード例 #16
0
        public bool DeleteTagNews(int tagId)
        {
            bool    check   = false;
            NewsTag newsTag = _unitOfWork.GetRepository <NewsTag>().FindById(tagId);

            if (newsTag != null)
            {
                _unitOfWork.GetRepository <NewsTag>().Delete(newsTag);
                _unitOfWork.Commit();
                check = true;
            }
            return(check);
        }
コード例 #17
0
        public void Attach_Old_Relationship_And_Create_New_Tags()
        {
            // Assign
            var tags = new[] { "Test", "Test2" };

            var faq = new Faq {
                Id = 77
            };
            var news = new News {
                Id = 33
            };

            var faqTag = new FaqTag {
                FaqId = 77, Faq = faq, TagId = 65
            };
            var newsTag = new NewsTag {
                NewsId = 33, News = news, TagId = 65
            };

            var tag = new Tag
            {
                Id       = 65,
                Name     = "Test",
                NewsTags = new List <NewsTag> {
                    newsTag
                },
                FaqTags = new List <FaqTag> {
                    faqTag
                },
            };

            faqTag.Tag  = tag;
            newsTag.Tag = tag;

            // Act
            TagHelpers.SetTags <News, NewsTag>(tags, news, new List <Tag> {
                tag
            });
            TagHelpers.SetTags <Faq, FaqTag>(tags, faq, new List <Tag> {
                tag
            });

            // Assert
            Assert.Equal(33, news.NewsTags.Single(nt => nt.Tag.Name == "Test").NewsId);
            Assert.Equal(77, faq.FaqTags.Single(nt => nt.Tag.Name == "Test").FaqId);
            Assert.Equal(65, faq.FaqTags.Single(nt => nt.Tag.Name == "Test").TagId);
            Assert.Equal(65, news.NewsTags.Single(nt => nt.Tag.Name == "Test").TagId);
            Assert.Equal(0, faq.FaqTags.Single(nt => nt.Tag.Name == "Test2").Tag.Id);
            Assert.Equal(0, news.NewsTags.Single(nt => nt.Tag.Name == "Test2").Tag.Id);
        }
コード例 #18
0
        // GET: NewsTags/Delete/5
        public ActionResult Delete(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            NewsTag newsTag = db.NewsTags.Find(id);

            if (newsTag == null)
            {
                return(HttpNotFound());
            }
            return(View(newsTag));
        }
コード例 #19
0
        /// <summary>
        /// Updates the news tag
        /// </summary>
        /// <param name="newsTag">News tag</param>
        public virtual void UpdateNewsTag(NewsTag newsTag)
        {
            if (newsTag == null)
            {
                throw new ArgumentNullException("newsTag");
            }

            _newsTagRepository.Update(newsTag);

            //cache
            _cacheManager.RemoveByPattern(NEWSTAG_PATTERN_KEY);

            //event notification
            _eventPublisher.EntityUpdated(newsTag);
        }
コード例 #20
0
        public ActionResult Edit(int?id)
        {
            if (id == null)
            {
                return(HttpNotFound("ID is missing"));
            }

            NewsTag newsTag = db.NewsTags.Find(id);

            if (newsTag == null)
            {
                return(HttpNotFound("ID was not found"));
            }

            return(View(newsTag));
        }
コード例 #21
0
        public bool CreateTagNews(NewsTagModel newsTagModel)
        {
            bool check = false;

            if (newsTagModel != null)
            {
                NewsTag newTag = new NewsTag()
                {
                    TagId  = newsTagModel.TagId,
                    NewsId = newsTagModel.NewsId,
                };
                _unitOfWork.GetRepository <NewsTag>().Insert(newTag);
                _unitOfWork.Commit();
                check = true;
            }
            return(check);
        }
コード例 #22
0
        /// <summary>
        /// 添加资讯
        /// </summary>
        /// <param name="saveModel"></param>
        /// <returns></returns>
        public override WebResponseContent Add(SaveModel saveModel)
        {
            WebResponseContent responseContent = WebResponseContent.Instance;

            AddOnExecuted = (News news, object list) =>
            {
                if (news.Tags.IsNullOrEmpty())
                {
                    return(responseContent.OK());
                }
                string[] tags = news.Tags?.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
                if (tags.Length > 5)
                {
                    return(responseContent.Error("标签不能超过5个"));
                }
                if (tags.Length > 0)
                {
                    for (int i = 0; i < tags.Length; i++)
                    {
                        var tagModel = repository.DbContext.Set <NewsTag>().Where(m => m.Tag == tags[i]).FirstOrDefault();
                        if (tagModel == null)
                        {
                            tagModel = new NewsTag()
                            {
                                Tag = tags[i], UseCount = 1
                            };
                            tagModel.SetCreateDefaultVal();
                            repository.DbContext.Set <NewsTag>().Add(tagModel);
                        }
                        else
                        {
                            tagModel.UseCount += 1;
                            repository.DbContext.Set <NewsTag>().Update(tagModel);
                        }
                    }
                    if (repository.DbContext.SaveChanges() > 0)
                    {
                        return(responseContent.OK("创建成功."));
                    }
                }
                news.SetModifyDefaultVal();
                return(responseContent.OK());
            };
            return(base.Add(saveModel).OK("已提交,正在审核中.."));
        }
コード例 #23
0
        public async Task UpdateTagsAsync(int id, string content)
        {
            foreach (var commonTag in CommonTags)
            {
                if (content.Contains(commonTag))
                {
                    var tagId = await this.GetTagId(commonTag);

                    if (!this.newsTagsRepository.AllWithDeleted().Any(x => x.NewsId == id && x.TagId == tagId))
                    {
                        var newsTag = new NewsTag {
                            NewsId = id, TagId = tagId
                        };
                        await this.newsTagsRepository.AddAsync(newsTag);
                    }
                }
            }

            await this.newsTagsRepository.SaveChangesAsync();
        }
コード例 #24
0
        public async Task <ActionResult <NewsTag> > PostNewsTag(NewsTag newsTag)
        {
            _context.NewsTag.Add(newsTag);
            try
            {
                await _context.SaveChangesAsync();
            }
            catch (DbUpdateException)
            {
                if (NewsTagExists(newsTag.TagId))
                {
                    return(Conflict());
                }
                else
                {
                    throw;
                }
            }

            return(CreatedAtAction("GetNewsTag", new { id = newsTag.TagId }, newsTag));
        }
コード例 #25
0
 public static NewsTag ToEntity(this NewsTagModel model, NewsTag destination)
 {
     return(model.MapTo(destination));
 }
コード例 #26
0
 public static NewsTagModel ToModel(this NewsTag entity)
 {
     return(entity.MapTo <NewsTag, NewsTagModel>());
 }