public async Task <IActionResult> Submit([FromBody] PostModActionDTO modAction, [FromServices] PostService postService) { Post post = postService.GetPost(modAction.PostId); uint modId = uint.Parse(User.FindFirstValue(ClaimTypes.NameIdentifier)); if ((post.AuthorId == modId || post.PlayerId == modId) && !User.IsInRole(ApiRoles.Administrator)) { return(StatusCode(403, $"CMs cannot act on Posts with relation to self. This restriction is lifted for users with {ApiRoles.Administrator} role.")); } await _service.SubmitPostModActionAsync(modAction with { ModId = modId }); return(StatusCode(202)); }
public async Task SubmitPostModActionAsync(PostModActionDTO modAction) { EntityEntry <PostModAction> entityEntry = await _context.PostModActions.AddAsync(modAction.Adapt <PostModAction>()); switch (modAction.ActionType) { case ModActionType.Deletion: await _postService.DeletePostAsync(modAction.PostId, true); await _notifications.SendNewNotification(PostModDeletedNotification.FromModAction(entityEntry.Entity)); break; case ModActionType.Update: PlayerPostDTO current = _postService.GetPost(modAction.PostId).Adapt <PlayerPostDTO>(); await _postService.EditPostAsync(modAction.PostId, current with { Content = modAction.UpdatedPost.Content ?? current.Content, Flairs = modAction.UpdatedPost.Flairs }); break; }