public async Task <JsonResult> Comment(CommentModel Model) //main comment & reply a comment { // flood ihtimalleri: // aynı veya benzer comment içeriğini girme, // çok fazla ard arda giriş yapma. if (!ModelState.IsValid) { return(Json(null)); } AuthUser = await GetAuthenticatedUserFromDatabaseAsync(); if (Model.NeedId != null) { var CommentedNeed = await Context.Need.FirstOrDefaultAsync(x => x.Id == Model.NeedId && !x.IsRemoved && x.IsConfirmed); if (CommentedNeed != null) { var NewComment = new NeedComment() { Comment = Model.Comment, UserId = AuthUser.Id, NeedId = (long)Model.NeedId }; await Context.AddAsync(NewComment); await Context.SaveChangesAsync(); return(Json(new { id = NewComment.Id })); //returning comment id for sliding page to the new comment } else { return(Json(new { infoMessage = "Tartışma başlatılacak kampanyaya ulaşamadık" })); } } else if (Model.RelatedCommentId != null) { var RepliedComment = await Context.NeedComment.Include(x => x.Need). FirstOrDefaultAsync(x => x.Id == Model.RelatedCommentId && !x.IsRemoved && !x.Need.IsRemoved && x.Need.IsConfirmed); if (RepliedComment != null) { var NewReply = new NeedComment() { Comment = Model.Comment, UserId = AuthUser.Id, NeedId = RepliedComment.NeedId, RelatedCommentId = RepliedComment.Id }; await Context.AddAsync(NewReply); await Context.SaveChangesAsync(); return(Json(new { id = NewReply.Id })); //returning comment id for sliding page to the new comment } else { return(Json(new { infoMessage = "Cevaplanacak yoruma ulaşamadık" })); } } return(Json(null)); }
public async Task <IActionResult> PostAdd(CommentModel model) //doing comment or reply { if (model.NeedId == null && model.RelatedCommentId == null || model.NeedId == Guid.Empty && model.RelatedCommentId == Guid.Empty) { return(Error("Yorum yapmak istediğiniz kampanyayı veya cevaplamak istedğiniz yorumu kontrol edin")); } if (!ModelState.IsValid) { return(Error(ModelState.Values.SelectMany(v => v.Errors).FirstOrDefault().ErrorMessage)); } if (model.NeedId != Guid.Empty && model.NeedId != null) // add new comment { var commentedNeed = await Context.Need.FirstOrDefaultAsync(x => x.Id == model.NeedId && !x.IsRemoved); if (commentedNeed != null) { if (commentedNeed.Stage != 3) { return(Error("Burada tartışma başlatılamaz")); } var NewComment = new NeedComment { Comment = model.Comment.RemoveLessGreaterSigns(), NeedId = (Guid)model.NeedId, UserId = Guid.Parse(User.Identity.GetUserId()) }; await Context.AddAsync(NewComment); await Context.SaveChangesAsync(); return(Succes(null, NewComment.Id, 201)); } return(Error("Tartışmanın başlatılacağı kampanya yok", null, null, 404)); } else //[reply] add relational comment { var repliedComment = await Context.NeedComment.Include(comment => comment.Need).FirstOrDefaultAsync(x => x.Id == model.RelatedCommentId && !x.IsRemoved && !x.Need.IsRemoved); if (repliedComment != null) { if (repliedComment.Need.Stage != 3) { return(Error("Burada cevap yazılamaz")); } var NewReply = new NeedComment { Comment = model.Comment.RemoveLessGreaterSigns(), UserId = Guid.Parse(User.Identity.GetUserId()), NeedId = repliedComment.NeedId, RelatedCommentId = repliedComment.Id }; await Context.AddAsync(NewReply); await Context.SaveChangesAsync(); return(Succes(null, NewReply.Id, 201)); } return(Error("Cevaplanacak yorum yok", null, null, 404)); } }