public async Task <IActionResult> AddComment(BlogCommentPartialViewModel model) { var user = UserModel.GetAuthenticatedUser(User.Identity); model.UserId = user.Email; model.FullName = user.GetFullName(); model.Created = DateTime.UtcNow; model.LastModified = model.Created; model.UserAgent = HttpContext.Request.Headers["User-Agent"].ToString(); if (!string.IsNullOrEmpty(model.Comment)) { await _blogCommentsRepository.SaveAsync(model); } return(RedirectToAction("BlogDetails", "Blog", new { id = model.BlogId })); }
public IActionResult GetCommentReplyForm(string commentId, string blogId) { var user = UserModel.GetAuthenticatedUser(User.Identity); var created = DateTime.UtcNow; var model = new BlogCommentPartialViewModel { UserId = user.Email, FullName = user.GetFullName(), BlogId = blogId, ParentId = commentId, Created = created, LastModified = created }; return(PartialView("~/Views/Blog/BlogCommentReplyFormPartial.cshtml", model)); }
private async Task <BlogViewModel> GetBlogViewModel(string id) { var blog = await _blogRepository.GetAsync(id); var user = UserModel.GetAuthenticatedUser(User.Identity); var userRole = (user.Email == null) ? null : await _userRolesRepository.GetAsync(user.Email.ToLower()); var isAdmin = (userRole != null) && userRole.Role == StreamsRoles.Admin; var isAuthor = (user.Email != null) && user.Email == blog.AuthorId; var model = new BlogViewModel { Id = blog.Id, Name = blog.Name, Overview = blog.Overview, Text = blog.Text, ProjectId = blog.ProjectId, ProjectName = blog.ProjectName, Category = blog.Category, Published = blog.Published, Posted = blog.Posted, FirstResult = blog.FirstResult, FirstResultAuthor = blog.FirstResultAuthor, FirstResultComment = blog.FirstResultComment, SecondResult = blog.SecondResult, SecondResultAuthor = blog.SecondResultAuthor, SecondResultComment = blog.SecondResultComment, ThirdResult = blog.ThirdResult, ThirdResultAuthor = blog.ThirdResultAuthor, ThirdResultComment = blog.ThirdResultComment, FourthResult = blog.FourthResult, FourthResultAuthor = blog.FourthResultAuthor, FourthResultComment = blog.FourthResultComment, AuthorId = blog.AuthorId, AuthorName = blog.AuthorName, IsAdmin = isAdmin }; var comments = await _blogCommentsRepository.GetBlogCommentsAsync(id); foreach (var comment in comments) { if (!string.IsNullOrEmpty(comment.Comment)) { comment.Comment = Regex.Replace(comment.Comment, @"\r\n?|\n", "<br />"); } } comments = SortComments(comments); var commenterIsModerator = new Dictionary <string, bool>(); foreach (var comment in comments) { var role = await _userRolesRepository.GetAsync(comment.UserId); var isModerator = role != null && role.Role == StreamsRoles.Admin; commenterIsModerator.Add(comment.Id, isModerator); } var commentsPartial = new BlogCommentPartialViewModel { BlogId = model.Id, UserId = user.Email, Comments = comments, IsAdmin = isAdmin, IsAuthor = isAuthor, CommenterIsModerator = commenterIsModerator, BlogAuthorId = blog.AuthorId }; model.CommentsPartial = commentsPartial; var blogImageInfo = await _blogPictureInfoRepository.GetAsync(blog.Id); if (blogImageInfo != null) { var blogImage = await _blogPictureRepository.GetBlogPicture(blog.Id); byte[] bytesArray; using (var ms = new MemoryStream()) { blogImage.CopyTo(ms); bytesArray = ms.ToArray(); } model.ImageDataType = blogImageInfo.ContentType; model.ImageBase64 = Convert.ToBase64String(bytesArray); } if (string.IsNullOrEmpty(blog.ProjectId)) { return(model); } var project = await _projectRepository.GetAsync(blog.ProjectId); model.ProjectBudget = project.BudgetFirstPlace; model.ProjectCategory = project.Category; model.ProjectAuthor = project.AuthorFullName; model.ProjectParticipants = await _participantsRepository.GetProjectParticipantsCountAsync(blog.ProjectId); model.ProjectResults = await _resultRepository.GetResultsCountAsync(blog.ProjectId); model.ProjectWinners = await _winnersRepository.GetWinnersCountAsync(blog.ProjectId); return(model); }