public async Task <ActionResult> Details(int id, PagingParams pagingParams) { GetBoardModel getBoardModel = await Mediator.Send(new GetBoardQuery(id)); var boardArticles = await Mediator.Send(new GetArticlesByIdsQuery(getBoardModel.ArticleIds, pagingParams)); var moderatorPagingParams = new PagingParams { PageNumber = 1, PageSize = 5 }; var boardModerators = await Mediator.Send(new GetPublicUsersByIdsQuery(getBoardModel.ModeratorIds, moderatorPagingParams)); string imageDataURL = ""; if (getBoardModel.BoardImageId > 0) { GetImageModel img = await Mediator.Send(new GetImageByIdQuery(getBoardModel.BoardImageId)); imageDataURL = _imageDataHelper.ConvertImageDataToDataUrl(img.ImageData, img.ContentType); } var model = new BoardDetailsViewModel { Board = getBoardModel, ArticlePage = new FrontendPage <GetArticleModel>(boardArticles), Moderators = new FrontendPage <GetPublicUserModel>(boardModerators), ImageDataUrl = imageDataURL }; return(View(model)); }
public IViewComponentResult Invoke(GetBoardModel boardModel) { var model = new BoardCardViewModel { Board = boardModel }; return(View(model)); }
public async Task <IViewComponentResult> InvokeAsync(GetArticleModel articleModel, string imageDataUrl, bool displayText = false) { // TODO: test with deleted boards var getBoardQuery = new GetBoardQuery(articleModel.BoardId); GetBoardModel board = await getBoardQuery.DefaultIfExceptionAsync(_mediator); // TODO: returns null, which throws exception in view, if user is deleted var getuserQuery = new GetPublicUserQuery(articleModel.UserId); GetPublicUserModel user = await getuserQuery.DefaultIfExceptionAsync(_mediator); string jwt = _apiJwtManager.GetToken(); bool loggedIn = false; bool saved = false; bool userUpvoted = false; bool userDownvoted = false; bool userCreatedArticle = false; try { var loggedInUser = await _mediator.Send(new GetAuthenticatedUserQuery()); if (loggedInUser != null) { loggedIn = true; } saved = loggedInUser.SavedArticles.Any(articleId => articleId == articleModel.Id); userUpvoted = loggedInUser.LikedArticles.Any(articleId => articleId == articleModel.Id); userDownvoted = loggedInUser.DislikedArticles.Any(articleId => articleId == articleModel.Id); userCreatedArticle = loggedInUser.ArticleIds.Any(articleId => articleId == articleModel.Id); } catch { } var viewModel = new ArticleCardViewModel { Article = articleModel, Board = board, User = user, Jwt = jwt, LoggedIn = loggedIn, Saved = saved, UserUpvoted = userUpvoted, UserDownvoted = userDownvoted, UserCreatedArticle = userCreatedArticle, ImageDataUrl = imageDataUrl, DisplayText = displayText, BaseUrl = _baseUrl }; return(View(viewModel)); }
public async Task ShouldAddModerator() { // Arrange using var scope = Factory.Services.CreateScope(); Assert.DoesNotContain(user.Id, board.Moderators.Select(bm => bm.UserId)); var sut = new AddModeratorHandler(unitOfWork, mediator, mapper, currentUserServiceMock.Object); // Act GetBoardModel sutResult = await sut.Handle(new AddModeratorCommand(board.Id, user.Id), new CancellationToken(false)); // Assert Assert.NotNull(sutResult); var updatedBoard = await unitOfWork.Boards.GetEntityAsync(sutResult.Id); Assert.Contains(user.Id, updatedBoard.Moderators.Select(bm => bm.UserId)); }
public async Task <ViewResult> Details(int id, PagingParams pagingParams) { var articleModel = await Mediator.Send(new GetArticleQuery(id)); var getArticleCommentsQuery = new GetCommentsByIdsQuery(articleModel.CommentIds, pagingParams); var articleComments = await getArticleCommentsQuery.DefaultIfExceptionAsync(Mediator); var getBoardQuery = new GetBoardQuery(articleModel.BoardId); GetBoardModel board = await getBoardQuery.DefaultIfExceptionAsync(Mediator); var getUserQuery = new GetPublicUserQuery(articleModel.UserId); GetPublicUserModel user = await getUserQuery.DefaultIfExceptionAsync(Mediator); var privateUser = await new GetAuthenticatedUserQuery().DefaultIfExceptionAsync(Mediator); var loggedIn = privateUser != null && privateUser.Id != 0; var savedArticle = loggedIn && privateUser.SavedArticles.Contains(id); var wroteArticle = loggedIn && privateUser.ArticleIds.Contains(id); string imageDataURL = ""; if (articleModel.AssociatedImageId > 0) { GetImageModel img = await Mediator.Send(new GetImageByIdQuery(articleModel.AssociatedImageId)); imageDataURL = _imageDataHelper.ConvertImageDataToDataUrl(img.ImageData, img.ContentType); } var viewModel = new ArticleDetailsViewModel { Article = articleModel, Board = board, CommentPage = new FrontendPage <GetCommentModel>(articleComments), LoggedIn = loggedIn, User = user, UserSavedArticle = savedArticle, UserWroteArticle = wroteArticle, AssociatedImageDataUrl = imageDataURL }; return(View(viewModel)); }
public async Task <ActionResult> Create(BoardCreateModel boardCreateModel) { if (!ModelState.IsValid) { return(View(boardCreateModel)); } GetBoardModel addedBoard = await Mediator.Send(new AddBoardCommand(boardCreateModel.Board)); var file = Request.Form.Files.FirstOrDefault(); if (file != null) { PostImageModel imageModel = _imageFileReader.ConvertImageFileToImageModel(file); await Mediator.Send(new AddBoardImageCommand(imageModel, addedBoard.Id)); } return(RedirectToAction("Details", new { id = addedBoard.Id })); }
public async Task <IViewComponentResult> InvokeAsync(GetBoardModel boardModel, string imageDataUrl) { var pagingParams = new PagingParams() { PageNumber = 1, PageSize = 5 }; var moderators = await _mediator.Send(new GetPublicUsersByIdsQuery(boardModel.ModeratorIds, pagingParams)); bool loggedIn = false; bool moderating = false; bool subscribed = false; try { var user = await _mediator.Send(new GetAuthenticatedUserQuery()); loggedIn = user != null && user.Id > 0; moderating = loggedIn ? user.BoardsModerating.Contains(boardModel.Id) : false; subscribed = loggedIn ? user.BoardsSubscribed.Contains(boardModel.Id) : false; } catch { } var model = new BoardSidebarViewModel { Board = boardModel, ModeratorPage = new FrontendPage <GetPublicUserModel>(moderators), LoggedIn = loggedIn, Moderating = moderating, Subscribed = subscribed, ImageDataUrl = imageDataUrl }; return(View(model)); }
public ArticleCreationViewModel Create(GetBoardModel parentBoard) => new ArticleCreationViewModel(parentBoard, _ea, _viewManager, _articleApiClient);