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 })); }
public IActionResult Create() { var discussion = new DiscussionInputModel { Categories = this.forumService.GetCategories <CategoryDropDownViewModel>(), }; return(this.View(discussion)); }
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 })); }
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))); }
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); }
public DiscussionModel AddDiscussion(DiscussionInputModel discussionInputModel) { return(Post <DiscussionModel, DiscussionInputModel>("mod_forum_add_discussion", discussionInputModel)); }