public async Task <IActionResult> PutForumPost(int forumPostId, ForumPostForUpdateDto forumPost) { try { var user = await GetUser(); var forumPostUpdated = await context.Update(user.Id, forumPostId, forumPost, IsSudo()); return(Ok(mapper.Map <ForumPostPreviewDto>(forumPostUpdated))); } catch (ArgumentNullException e) { var paramName = e.ParamName; if (paramName != null) { return(NotFound(paramName)); } throw; } catch (AuthenticationException) { return(Forbid()); } }
public async Task <ForumPost> Update(int userId, int forumPostId, ForumPostForUpdateDto forumPost, bool sudo) { var user = await context .Users .FirstOrDefaultAsync(u => u.Id == userId); if (user == null) { throw new ArgumentNullException(nameof(userId)); } var forumPostEntity = await context .ForumPosts .FirstOrDefaultAsync(f => f.Id == forumPostId); if (forumPostEntity == null) { throw new ArgumentNullException(nameof(forumPostId)); } if (userId != forumPostEntity.AuthorId && !sudo) { throw new AuthenticationException(); } forumPostEntity.Content = forumPost.Content; context.Entry(forumPostEntity).State = EntityState.Modified; await context.SaveChangesAsync(); return(forumPostEntity); }