public async Task <IActionResult> AddTags([FromRoute] int id, [FromBody] string[] tags) { Post post = await FullPosts .Where(p => p.Id == id) .FirstOrDefaultAsync(); if (post == null) { return(NotFound($"No post {id} found")); } foreach (string tagName in tags) { Tag tag = await _context.Tags .Where(t => t.Name == tagName) .FirstOrDefaultAsync(); if (tag == null) { return(NotFound($"No tag {tagName} found")); } TagPost tagPost = new TagPost { PostId = id, TagId = tag.Id }; _context.Add(tagPost); } await _context.SaveChangesAsync(); int userId = (await _currentUser.GetCurrentUser(HttpContext)).Id; return(Ok(post.CommentsViewModel(userId))); }
public ActionResult Create(CreatePostViewModel model) { if (ModelState.IsValid) { // save post var post = new Post { Title = model.Title, Body = model.Body, Posted = DateTime.Now }; // save tagPot var tagPost = new TagPost { TagId = model.SelectedTadId, PostId = post.Id, Place = model.SelectedPlace }; post.TagPost.Add(tagPost); db.Post.Add(post); db.SaveChanges(); return(RedirectToAction("Index")); } return(View(model)); }
public async Task AddTagPost(TagPost tagPost) { var vecPostoji = applicationDbContext.TagPosts.Where(x => x.TagId == tagPost.TagId && x.QuestionId == tagPost.QuestionId).FirstOrDefault(); if (vecPostoji == null) { applicationDbContext.TagPosts.Add(tagPost); await applicationDbContext.SaveChangesAsync(); } }
public async Task AttachTagtoPost(string Tagname, string blogname, int postid) { try { if ((!CommonTools.isEmpty(Tagname) && (!CommonTools.isEmpty(blogname) && ((await this.Exists(Tagname, blogname)) == false)))) { Tag cat = await this.GetTag(Tagname, blogname); Blog blg = await this.blgmng.GetBlogAsync(blogname); if (cat != null && blg != null) { TagPost TagPost = new TagPost(); TagPost.BlogId = blg.Id; TagPost.TagId = cat.Id; TagPost.PostId = postid; db.Add(TagPost); await db.SaveChangesAsync(); } else if (blg != null) { Tag Tag = new Tag(); Tag.BlogId = blg.Id; Tag.Name = Tagname; await this.AddNew(Tag, blogname); cat = await this.GetTag(Tagname, blogname); if (cat != null) { TagPost TagPost = new TagPost(); TagPost.BlogId = blg.Id; TagPost.TagId = cat.Id; TagPost.PostId = postid; db.Add(TagPost); await db.SaveChangesAsync(); } } } } catch (Exception ex) { CommonTools.ErrorReporting(ex); //return null; } }
public async Task <IActionResult> Create([Bind("Title,Content,Tags")] QuestionViewModel q) { var user = await questionsRepository.getUserByUserName(User.Identity.Name); var question = new Question(); if (ModelState.IsValid) { question.TimeStamp = DateTime.UtcNow; question.Content = q.Content; question.Title = q.Title; question.User = user; await questionsRepository.AddQuestion(question); var AddedQuestion = await questionsRepository.getLastQuestion(); if (q.Tags != null) { q.Tags = q.Tags + ","; string[] listOfTags = (q.Tags).Split(","); for (int i = 0; i < listOfTags.Length - 1; i++) { Tag t = new Tag(); t.TagContent = listOfTags[i]; t.NumOfUses = 1; await tagsRepository.AddTags(t); var addedTag = await tagsRepository.GetTagByName(listOfTags[i]); TagPost tp = new TagPost(); tp.QuestionId = AddedQuestion.Id; tp.TagId = addedTag.Id; await tagPostRepository.AddTagPost(tp); } } await notificationRepository.AddUserToNotificationList(user.Id, AddedQuestion.Id, NotificationType.QUESTION); return(RedirectToAction("Details", new { question.Id })); } q.PopularTags = await tagsRepository.GetPopular(); return(View(q)); }
public async Task AddPostTags(int postId, string tags, string userAlias) { Post post = await unitOfWork.Posts.GetByIdWithItems(postId); AppUser user = await unitOfWork.Users.GetByAliasWithItems(userAlias); var check = user.Posts.FirstOrDefault(p => p.Id == postId); if (user != null && post != null && check != null && tags != null) { var res = tags.Split("#").Where(s => s != "").Select(s => s.Trim()); foreach (var i in res) { Tag tag = unitOfWork.Tags.List(t => t.Text == i).FirstOrDefault(); if (tag == null) { tag = new Tag { Text = i }; unitOfWork.Tags.Add(tag); } TagPost tagPost = post.TagPosts.Where(tp => tp.Tag == tag).FirstOrDefault(); if (tagPost == null) { tagPost = new TagPost { Tag = tag, Post = post }; unitOfWork.TagPost.Add(tagPost); } } await unitOfWork.SaveAsync(); } else { throw new ArgumentException(); } }
public async Task <IActionResult> AddTag([FromRoute] int id, [FromRoute] string tagName) { Post post = await FullPosts .Where(p => p.Id == id) .FirstOrDefaultAsync(); Tag tag = await _context.Tags .Where(t => t.Name == tagName) .FirstOrDefaultAsync(); if (post == null) { return(NotFound($"No post {id} found")); } if (tag == null) { return(NotFound($"No tag {tagName} found")); } if (!await _rightsChecker.CheckRights(post, HttpContext)) { return(BadRequest("No rights to add tag to this post")); } if (tag.TagPosts.Any(tp => tp.PostId == id)) { return(BadRequest($"Post {id} already contains tag {tag.Id}")); } TagPost tagPost = new TagPost { PostId = id, TagId = tag.Id }; _context.Add(tagPost); await _context.SaveChangesAsync(); int userId = (await _currentUser.GetCurrentUser(HttpContext)).Id; return(Ok(post.CommentsViewModel(userId))); }
public async Task <IActionResult> RemoveTag([FromRoute] int id, [FromRoute] string tagName) { Post post = await FullPosts .Where(p => p.Id == id) .FirstOrDefaultAsync(); Tag tag = await _context.Tags .Where(t => t.Name == tagName) .FirstOrDefaultAsync(); if (post == null) { return(NotFound($"No post {id} found")); } if (tag == null) { return(NotFound($"No tag {tagName} found")); } if (!await _rightsChecker.CheckRights(post, HttpContext)) { return(BadRequest("No rights to remove tag from this post")); } if (!tag.TagPosts.Any(tp => tp.PostId == id)) { return(BadRequest($"Post {id} does not contain tag {tag.Id}")); } TagPost tagPost = post.TagPosts.Where(tp => tp.TagId == tag.Id).FirstOrDefault(); tagPost.IsDeleted = true; _context.Update(tagPost); await _context.SaveChangesAsync(); int userId = (await _currentUser.GetCurrentUser(HttpContext)).Id; return(Ok(post.CommentsViewModel(userId))); }
public ActionResult Edit(CreatePostViewModel model) { if (ModelState.IsValid) { // save post var post = new Post { Id = model.Id, Title = model.Title, Body = model.Body, Posted = DateTime.Now }; // save tagPot var tagPost = new TagPost { TagId = model.SelectedTadId, PostId = post.Id, Place = model.SelectedPlace }; post.TagPost.Add(tagPost); db.Entry(post).State = EntityState.Modified; db.SaveChanges(); // Add Forum relation var tag = db.Tag.Find(model.SelectedTadId); if (!post.TagPost.Any(o => o.Tag == tag)) { } return(RedirectToAction("Index")); } return(View(model)); }
void HandleNewPosts() { List <string> newPosts = database.getUnhandledPostsMessages(); foreach (string postMessage in newPosts) { Post post; if (postMessage.StartsWith("#")) { post = new TagPost(); } else if (postMessage.StartsWith("@")) { post = new MentionPost(); } else { post = new Post(); } post.CreatePost(database, postMessage); } }
private static void SeedTagsToPosts(UnprofessionalsDbContext context) { if (context.TagsPosts.Any()) { return; } var tagPost = new TagPost { PostId = 1, TagId = 1 }; var tagPost1 = new TagPost { PostId = 1, TagId = 2 }; var tagPost2 = new TagPost { PostId = 1, TagId = 3 }; var tagPost3 = new TagPost { PostId = 1, TagId = 4 }; var tagPost4 = new TagPost { PostId = 1, TagId = 5 }; var tagPost5 = new TagPost { PostId = 1, TagId = 6 }; var tagPost6 = new TagPost { PostId = 1, TagId = 7 }; var tagPost7 = new TagPost { PostId = 2, TagId = 1 }; var tagPost8 = new TagPost { PostId = 2, TagId = 2 }; var tagPost9 = new TagPost { PostId = 2, TagId = 3 }; var tagPost10 = new TagPost { PostId = 2, TagId = 4 }; var tagPost11 = new TagPost { PostId = 2, TagId = 5 }; var tagPost12 = new TagPost { PostId = 2, TagId = 6 }; var tagPost13 = new TagPost { PostId = 2, TagId = 7 }; var tagPost14 = new TagPost { PostId = 4, TagId = 3 }; var tagPost15 = new TagPost { PostId = 5, TagId = 4 }; var tagPost16 = new TagPost { PostId = 3, TagId = 5 }; var tagPost17 = new TagPost { PostId = 3, TagId = 6 }; var tagPost18 = new TagPost { PostId = 5, TagId = 7 }; var tagsPosts = new List <TagPost> { tagPost, tagPost1, tagPost2, tagPost3, tagPost4, tagPost5, tagPost6, tagPost7, tagPost8, tagPost9, tagPost10, tagPost11, tagPost12, tagPost13, tagPost14, tagPost15, tagPost16, tagPost17, tagPost18 }; context.TagsPosts.AddRange(tagsPosts); context.SaveChanges(); }
public async Task <IActionResult> Edit([Bind("Title,Content,Tags,User,Id,PopularTags")] QuestionViewModel q, string submit) { if (submit == "Delete") { await questionsRepository.DeleteQuestion(q.Id); return(RedirectToAction("Index")); } else { var question = await questionsRepository.getQuestion(q.Id); if (ModelState.IsValid) { question.Content = q.Content; question.Title = q.Title; var oldTags = question.Tags; await questionsRepository.UpdateQuestion(question); if (q.Tags != null) { q.Tags = q.Tags + ","; string[] listOfTags = (q.Tags).Split(","); var listOfOldTags = oldTags.Select(x => x.Tag.TagContent).ToList <String>(); var newTags = listOfTags.Except(listOfOldTags).ToArray <String>(); var changedTags = listOfOldTags.Except(listOfTags).ToArray <String>(); for (int i = 0; i < newTags.Length - 1; i++) { Tag t = new Tag(); t.TagContent = newTags[i]; t.NumOfUses = 1; await tagsRepository.AddTags(t); var addedTag = await tagsRepository.GetTagByName(newTags[i]); TagPost tp = new TagPost(); tp.QuestionId = question.Id; tp.TagId = addedTag.Id; await tagPostRepository.AddTagPost(tp); } for (int i = 0; i < changedTags.Length; i++) { Tag t = await tagsRepository.GetTagByName(changedTags[i]); await tagPostRepository.DeleteTagFromQuestion(t, q.Id); await tagsRepository.DeleteTags(t); } } else { await tagPostRepository.DeleteAllTagsFromQuestion(q.Id); } return(RedirectToAction("Details", new { question.Id })); } q.PopularTags = await tagsRepository.GetPopular(); } return(View(q)); }