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" })); } }
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())); }
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); }
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")); }
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); }
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); }
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); }
public async Task <IActionResult> Edit(int Id) { var category = await _commentService.Get(Id); return(View(CommentHelpers.ConvertToView(category))); }