public async Task <ActionResult <BoardAdminViewModel> > Admin(int id) { var user = await Mediator.Send(new GetAuthenticatedUserQuery()); var board = await Mediator.Send(new GetBoardQuery(id)); bool userCreatedBoard = board.CreatorId == user.Id; if (userCreatedBoard || user.BoardsModerating.Contains(id)) { var moderatorPagingParams = new PagingParams { PageNumber = 1, PageSize = 5 }; var moderators = await Mediator.Send(new GetPublicUsersByIdsQuery(board.ModeratorIds, moderatorPagingParams)); var viewModel = new BoardAdminViewModel { Board = board, ModeratorPage = new FrontendPage <GetPublicUserModel>(moderators), UserCreatedBoard = board.CreatorId == user.Id }; return(View(viewModel)); } else { // Redirect if not creator or moderator of board return(RedirectToAction("Details", new { id })); } }
public async Task <ActionResult> AddModerator(BoardAdminViewModel model) { try { var toAddModerator = await Mediator.Send(new GetUserByUsernameQuery(model.ModeratorAddedUsername)); var updatedBoard = await Mediator.Send(new AddModeratorCommand(model.Board.Id, toAddModerator.Id)); return(RedirectToAction("Admin", new { id = updatedBoard.Id })); } catch (NotFoundException) { return(RedirectToAction("Admin", new { id = model.Board.Id })); } }