BgEngine.Controllers.CommentController.AddComment C# (CSharp) Method

AddComment() private method

private AddComment ( Comment comment ) : System.Web.Mvc.ActionResult
comment BgEngine.Domain.EntityModel.Comment
return System.Web.Mvc.ActionResult
        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() });
        }