Esempio n. 1
0
        public async Task <IActionResult> AddComment([FromBody] CommentView result)
        {
            if (!ModelState.IsValid)
            {
                // wysyłamy informacje o błędach
                return(BadRequest(ModelState));
            }

            var settings = await _settingsService.GetBlogSettings();

            var article = await _articleService.Get(result.ArticleId);

            var comment = await _commentService.Create(CommentHelpers.ConvertToModel(result, article));

            if (comment)
            {
                var notification = new NotificationData($"Wpadł Ci nowy komentarz od {result.Name} | {result.Email}");
                _notificationService.Send(notification);

                if (settings.CommentsNotify)
                {
                    _emailService.SendCommentConfirmation(result);
                }

                return(Ok(new { status = "Komentarz zapisany pomyślnie" }));
            }
            else
            {
                return(BadRequest(new { status = "Problem z zapisem komentarza" }));
            }
        }
Esempio n. 2
0
        public async Task <IEnumerable <CommentViewModel> > GetCommentsAsync(CommentSearchParams searchParams)
        {
            User user = await _userManager.FindByIdAsync(searchParams.UserId);

            Guard.Against.NullItem(user.Id, nameof(user));

            var specification = new CommentFilterSpecification(searchParams);

            return(await _commentRepository.ListAsync <CommentViewModel>(specification,
                                                                         CommentHelpers.GetCommentMapperConfiguration()));
        }
Esempio n. 3
0
        protected override Task HandleRequirementAsync(AuthorizationHandlerContext context,
                                                       CanUpdateCommentAuthorizationRequirement requirement,
                                                       Sharporum.Domain.Entities.Comment comment)
        {
            if (CommentHelpers.UserOwnsComment(context.User.FindFirstValue("sub"), comment.AuthorId))
            {
                context.Succeed(requirement);
                return(Task.CompletedTask);
            }

            context.Fail();
            return(Task.CompletedTask);
        }
Esempio n. 4
0
        public async Task <IActionResult> Edit(CommentView result)
        {
            if (!ModelState.IsValid)
            {
                return(View(result));
            }

            var comment = await _commentService.Get(result.Id);

            await _commentService.Update(CommentHelpers.MergeViewWithModel(comment, result));

            return(RedirectToAction("List"));
        }
Esempio n. 5
0
        public async Task Expect_Delete_Article_With_Comments()
        {
            var createArticleCommand = new Create.Command
            {
                Article = new Create.ArticleData
                {
                    Title       = "Test article 666",
                    Description = "Description of the test article",
                    Body        = "Body of the test article"
                }
            };

            var createdArticle = await ArticleHelpers.CreateArticle(this, createArticleCommand);

            var article = await ExecuteDbContextAsync(context => context.Articles
                                                      .Include(a => a.ArticleTags)
                                                      .Where(d => d.Slug == createdArticle.Slug)
                                                      .SingleOrDefaultAsync());

            var articleId = article.ArticleId;
            var slug      = article.Slug;

            var createCommentCommand = new beeforum.Features.Comments.Create.Command
            {
                Comment = new beeforum.Features.Comments.Create.CommentData
                {
                    Body = "article comment"
                },
                Slug = slug
            };

            var comment = await CommentHelpers.CreateComment(this, createCommentCommand, UserHelpers.DefaultUserName);

            // delete article with comment
            var deleteCommand = new Delete.Command(slug);

            var dbContext = GetDbContext();

            var handler = new Delete.Handler(dbContext);
            await handler.Handle(deleteCommand, new CancellationToken());

            var deleted = await ExecuteDbContextAsync(context =>
                                                      context.Articles.Where(d => d.Slug == deleteCommand.Slug).SingleOrDefaultAsync());

            Assert.Null(deleted);
        }
Esempio n. 6
0
        public async Task Expect_Delete_Article_With_Comments()
        {
            var createArticleCmd = new Create.Command()
            {
                Article = new Create.ArticleData()
                {
                    Title       = "Test article dsergiu77",
                    Description = "Description of the test article",
                    Body        = "Body of the test article",
                }
            };

            var article = await ArticleHelpers.CreateArticle(this, createArticleCmd);

            var dbArticle = await ExecuteDbContextAsync(
                db => db.Articles.Include(a => a.ArticleTags)
                .Where(d => d.Slug == article.Slug).SingleOrDefaultAsync()
                );

            var articleId = dbArticle.ArticleId;
            var slug      = dbArticle.Slug;

            // create article comment
            var createCommentCmd = new Codebase.Features.Comments.Create.Command()
            {
                Comment = new Codebase.Features.Comments.Create.CommentData()
                {
                    Body = "article comment"
                },
                Slug = slug
            };

            var comment = await CommentHelpers.CreateComment(this, createCommentCmd, UserHelpers.DefaultUserName);

            // delete article with comment
            var deleteCmd = new Delete.Command(slug);

            var dbContext = GetDbContext();

            var articleDeleteHandler = new Delete.QueryHandler(dbContext);
            await articleDeleteHandler.Handle(deleteCmd, new System.Threading.CancellationToken());

            var deleted = await ExecuteDbContextAsync(db => db.Articles.Where(d => d.Slug == deleteCmd.Slug).SingleOrDefaultAsync());

            Assert.Null(deleted);
        }
        protected override Task HandleRequirementAsync(AuthorizationHandlerContext context,
                                                       CanDeleteCommentAuthorizationRequirement requirement,
                                                       Sharporum.Domain.Entities.Comment comment)
        {
            string roleBase = $"{nameof(Community)}/{comment.Post.CommunityId}";

            if (context.User.HasClaim(JwtClaimTypes.Role, $"{roleBase}/{Roles.Admin}") ||
                context.User.HasClaim(JwtClaimTypes.Role, $"{roleBase}/{Roles.Moderator}") ||
                CommentHelpers.UserOwnsComment(context.User.FindFirstValue("sub"), comment.AuthorId))
            {
                context.Succeed(requirement);
                return(Task.CompletedTask);
            }

            context.Fail();
            return(Task.CompletedTask);
        }
Esempio n. 8
0
        public async Task <CommentViewModel> GetCommentByIdAsync(string commentId)
        {
            var comment = await _commentRepository.GetByConditionAsync <CommentViewModel>(x => x.Id == commentId,
                                                                                          CommentHelpers.GetCommentMapperConfiguration());

            Guard.Against.NullItem(comment, nameof(comment));

            return(comment);
        }
Esempio n. 9
0
        public async Task <IActionResult> Edit(int Id)
        {
            var category = await _commentService.Get(Id);

            return(View(CommentHelpers.ConvertToView(category)));
        }