Example #1
0
        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 }));
        }
Example #2
0
        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));
        }
Example #3
0
        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);
        }