private ICollection<Tag> GetTags(ArticleDataModel model) { var titleTags = model.Title.Split(' '); var allTags = new HashSet<string>(titleTags); foreach (var modelTags in model.Tags) { allTags.Add(modelTags.Name); } var articleTags = new HashSet<Tag>(); foreach (var tagName in model.Tags) { var tag = this.data.Tags .All() .FirstOrDefault(t => t.Name == tagName.Name); if (tag == null) { tag = new Tag { Name = tagName.Name }; this.data.Tags.Add(tag); articleTags.Add(tag); } } return articleTags; }
public IHttpActionResult Create(ArticleDataModel model) { var userID = this.User.Identity.GetUserId(); var tags = GetTags(model); var category = GetCategory(model.Category); var article = new Article { Title = model.Title, Content = model.Content, DateCreated = DateTime.Now, CategoryID = category.ID, AuthorID = userID, Tags = tags }; this.data.Articles.Add(article); this.data.SaveChanges(); model.ID = article.ID; model.DateCreated = article.DateCreated; model.Tags = article.Tags.AsQueryable().Select(TagDataModel.FromTag).ToArray(); return Ok(model); }