public ActionResult AddComment(Comment comment) { // Spam is not an error if (ModelState["isspam"] != null) { ModelState.Remove("isspam"); comment.IsSpam = true; } if (TryValidateModel(comment)) { comment.Ip = Request.UserHostAddress; comment.UserAgent = Request.UserAgent; if (!CodeFirstSecurity.IsAuthenticated) { AnonymousCommentViewModel user; if (comment.AnonymousUser != null) { user = AutoMapper.Mapper.Map<AnonymousUser, AnonymousCommentViewModel>(comment.AnonymousUser); } else { user = new AnonymousCommentViewModel(); } if (TryValidateModel(user)) { BlogServices.CreateComment(comment, null); if (BgResources.Send_Mail_When_Comment_Received) { Utilities.SendMail(BgResources.Email_UserName, String.Format(Resources.AppMessages.Comment_Received, Request.UrlReferrer.AbsoluteUri), "<h2>" + Resources.AppMessages.User + "</h2>" + "<p>" + comment.AnonymousUser.Username + "</p>" + "<p>" + comment.AnonymousUser.Email + "</p>" + "<p>" + comment.AnonymousUser.Web + "</p>" + "<p>" + comment.Ip + "</p>" + "<p>" + comment.UserAgent + "</p>" + "<p>" + (comment.IsSpam ? Resources.AppMessages.MarkedAsSpam : Resources.AppMessages.MarkedAsHam) + "</p>" + "<p>" + Request.UrlReferrer.AbsoluteUri + "</p>" + "<h2>" + Resources.AppMessages.Comment_Message + "</h2>" + "<div>" + comment.Message + "</div>", true); } if (comment.IsSpam) { return Json(new { result = "warnings", warnings = new KeyValuePair<string, string>("spamdetected", Resources.AppMessages.SpamDetected) }); } else { return Json(new { result = "ok" }); } } else { return Json(new { result = "error", errors = ModelState.Where(s => s.Value.Errors.Count > 0).Select(s => new KeyValuePair<string, string>(s.Key, s.Value.Errors.First().ErrorMessage)).ToArray() }); } } else { User user = UserServices.FindEntityByIdentity(CodeFirstSecurity.CurrentUserId); BlogServices.CreateComment(comment, user); if (BgResources.Send_Mail_When_Comment_Received) { Utilities.SendMail(BgResources.Email_UserName, String.Format(Resources.AppMessages.Comment_Received, Request.UrlReferrer.AbsoluteUri), "<h2>" + Resources.AppMessages.User + "</h2>" + "<p>" + user.Username + "</p>" + "<p>" + user.Email + "</p>" + "<p>" + comment.UserAgent + "</p>" + "<p>" + Request.UrlReferrer.AbsoluteUri + "</p>" + "<h2>" + Resources.AppMessages.Comment_Message + "</h2>" + "<div>" + comment.Message + "</div>", true); } if (comment.IsSpam) { return Json(new { result = "warnings", warnings = new KeyValuePair<string, string>("spamdetected", Resources.AppMessages.SpamDetected) }); } else { return Json(new { result = "ok" }); } } } return Json(new { result = "error", errors = ModelState.Where(s => s.Value.Errors.Count > 0).Select(s => new KeyValuePair<string, string>(s.Key, s.Value.Errors.First().ErrorMessage)).ToArray() }); }