public ActionResult FlagPost(int id) { CommentFlag flag = new CommentFlag { CommentID = id, UserID = User.Identity.GetUserId() }; CommentFlag originalFlag = context.commentFlags.Where(p => p.CommentID == id && p.UserID != flag.UserID).FirstOrDefault(); if (originalFlag != null) { originalFlag.Counter++; if (originalFlag.Counter >= 5) { originalFlag.IsRemoved = true; Comment comment = context.comments.Where(p => p.Id == id).FirstOrDefault(); context.comments.Remove(comment); } flag.Counter = originalFlag.Counter; flag.IsRemoved = originalFlag.IsRemoved; } else { flag.Counter = 1; flag.IsRemoved = false; context.commentFlags.Add(flag); } context.SaveChanges(); return RedirectToAction("Index"); }
public async Task FlagComment(int commentId, string username) { var userId = await this.users.UserIdByUsername(username); if (userId != 0) { var commentFlag = new CommentFlag { CreatedOn = DateTime.Now, CommentId = commentId, UserId = userId }; this.commentFlags.Add(commentFlag); await this.commentFlags.SaveChangesAsync(); var comment = await this.comments .All() .Include(c => c.CommentFlags) .Where(c => c.Id == commentId) .FirstOrDefaultAsync(); if (comment.CommentFlags.Count >= Constants.FlagsNeededToHideComment) { comment.IsHidden = true; await this.comments.SaveChangesAsync(); } } }