Exemplo n.º 1
0
        public async Task <IActionResult> Edit(DiscussionInputModel input, int id)
        {
            if (!this.HasPermission(id))
            {
                return(this.Unauthorized());
            }

            if (!this.stringValidator.IsStringValid(input.Description, DescriptionMinLenght))
            {
                this.ModelState.AddModelError("Error", EmptyBody);
            }

            if (!this.ModelState.IsValid)
            {
                var discussion = this.forumService.GetById <EditDiscussionViewModel>(id);

                var categories = this.forumService.GetCategories <CategoryDropDownViewModel>();

                discussion.Categories = categories;

                return(this.View(discussion));
            }

            await this.forumService.UpdateAsync <DiscussionInputModel>(input, id);

            return(this.RedirectToAction(nameof(this.Discussion), new { id }));
        }
Exemplo n.º 2
0
        public IActionResult Create()
        {
            var discussion = new DiscussionInputModel
            {
                Categories = this.forumService.GetCategories <CategoryDropDownViewModel>(),
            };

            return(this.View(discussion));
        }
Exemplo n.º 3
0
        public async Task <IActionResult> Create(DiscussionInputModel inputModel)
        {
            var user = await this.userManager.GetUserAsync(this.User);

            if (!this.ModelState.IsValid)
            {
                return(this.RedirectToAction("Create", "Discussions", new { mediaId = inputModel.MediaId }));
            }

            try
            {
                await this.discussionsService.CreateDiscussion(inputModel, user.Id);
            }
            catch (Exception e)
            {
                this.ModelState.AddModelError(string.Empty, e.Message);
                return(this.RedirectToAction("Create", "Discussions", new { mediaId = inputModel.MediaId }));
            }

            return(this.RedirectToAction("All", "Discussions", new { mediaId = inputModel.MediaId }));
        }
Exemplo n.º 4
0
        public async Task <IActionResult> Create(DiscussionInputModel input)
        {
            if (!this.stringValidator.IsStringValid(input.Description, DescriptionMinLenght))
            {
                this.ModelState.AddModelError("Error", EmptyBody);
            }

            if (!this.ModelState.IsValid)
            {
                var discussionInput = new DiscussionInputModel
                {
                    Categories = this.forumService.GetCategories <CategoryDropDownViewModel>(),
                };

                return(this.View(discussionInput));
            }

            var userId = this.userManager.GetUserId(this.User);

            await this.forumService.CreateAsync <DiscussionInputModel>(input, userId);

            return(this.RedirectToAction(nameof(this.All)));
        }
Exemplo n.º 5
0
        public async Task CreateDiscussion(DiscussionInputModel inputModel, string userId)
        {
            bool doesMediaExist = await this.mediaRepo.AllAsNoTracking().AnyAsync(x => x.Id == inputModel.MediaId);

            if (!doesMediaExist)
            {
                throw new Exception(string.Format(GlobalExceptions.MediaDoesNotExist, inputModel.MediaId));
            }

            var discussion = new Discussion()

            {
                Title     = inputModel.Title,
                CreatorId = userId,
                MediaId   = inputModel.MediaId,
            };

            await this.discussionRepo.AddAsync(discussion);

            await this.CreateComment(inputModel.Content, userId, discussion.Id);

            await this.discussionRepo.SaveChangesAsync();
        }
        public async Task CreateDiscussionAddsCorrectly()
        {
            // Arrange
            var commentsList   = this.GetComments();
            var discussionList = this.GetDiscussions();

            var expectedComments   = commentsList.Count() + 1;
            var expectedDiscussion = discussionList.Count() + 1;

            var mediaList     = this.GetMedias();
            var media         = mediaList.FirstOrDefault().Id;
            var mediaRepoMock = new Mock <IRepository <Media> >();
            var mock          = mediaList.AsQueryable().BuildMock();

            mediaRepoMock.Setup(x => x.AllAsNoTracking()).Returns(mock.Object);

            var commentsRepoMock   = this.GetCommentMock(commentsList).Object;
            var discussionRepoMock = this.GetDiscussionMock(discussionList).Object;
            var commentService     = new DiscussionsService(discussionRepoMock, commentsRepoMock, this.commentVoteRepo, mediaRepoMock.Object);

            var inputModel = new DiscussionInputModel()
            {
                Content = "Hell yeah",
                MediaId = media,
                Title   = "Yes",
            };

            // Act
            await commentService.CreateDiscussion(inputModel, "");

            // Assert
            Assert.Equal(expectedComments, commentsRepoMock.AllAsNoTracking().Count());
            Assert.Equal(expectedDiscussion, discussionRepoMock.AllAsNoTracking().Count());
            Assert.Contains(discussionRepoMock.AllAsNoTracking().ToList(), x => x.MediaId == inputModel.MediaId && x.Title == inputModel.Title);
            Assert.Contains(commentsRepoMock.AllAsNoTracking().ToList(), x => x.Content == inputModel.Content);
        }
Exemplo n.º 7
0
 public DiscussionModel AddDiscussion(DiscussionInputModel discussionInputModel)
 {
     return(Post <DiscussionModel, DiscussionInputModel>("mod_forum_add_discussion", discussionInputModel));
 }