public void UpdateThread(BoardThread thread) { var oldThread = context.BoardThreads.First(x => x.Id == thread.Id); oldThread.SafeForWork = thread.SafeForWork; oldThread.ImageCount = thread.ImageCount; oldThread.PostCount = thread.PostCount; oldThread.IsLocked = thread.IsLocked; context.SaveChanges(); }
public BoardThreadViewModel(BoardThread thread) { PostViewModel = new PostViewModel { Post = thread.Post, ShowReplies = false, ShowPostPosition = false, ShortenText = true, ShowActions = false }; ThreadInfo = thread; }
public async Task <IActionResult> CreateThread(SubmitViewModel vm, IFormFile file) { await googleRecaptchaHelper.VerifyRecaptcha(Request, ModelState); if (!ModelState.IsValid) { return(Submit()); } var post = new BoardPost { Text = vm.Text.Trim(), DatePosted = DateTime.Now }; if (string.IsNullOrEmpty(vm.ImageUrl) == false) { try { post.Image = await writer.DownloadImageFromUrl(vm.ImageUrl); } catch { logger.LogError("An error occured while trying to download image from " + vm.ImageUrl); ModelState.AddModelError("ImageUrl", "Došlo je do greške. Provjerite ispravnost poveznice."); return(Submit()); } } else if (IsImageFileValid(file)) { post.Image = await writer.UploadImage(file); } var thread = new BoardThread { PostCount = 0, ImageCount = file == null ? 0 : 1, IsLocked = false, Posts = new List <BoardPost> { post } }; boardRepo.AddThread(thread); RemoveLastThread(); return(RedirectToAction("Thread", "Board", new { thread.Id })); }
public void AddPostToThread(BoardPost boardPost, long threadId) { boardPost.DatePosted = DateTime.Now; BoardThread thread = context.BoardThreads .Include(x => x.Posts) .FirstOrDefault(x => x.Id == threadId); if (!string.IsNullOrEmpty(boardPost.Image)) { thread.ImageCount++; } thread.PostCount++; thread?.Posts.Add(boardPost); context.SaveChanges(); }
public async void CreateThread_MoreThan40Threads_CallsRemoveThread(int threadCount, int timesRemoveThreadCalled) { var oldestThread = new BoardThread { Id = 1, Posts = new List <BoardPost> { new BoardPost { DatePosted = DateTime.Now.AddHours(-1) } } }; var boardThreads = GetBoardThreadsListContaining(threadCount, oldestThread); var boardThreadsRepoMock = new Mock <IBoardThreadRepository>(); boardThreadsRepoMock.Setup(x => x.BoardThreads).Returns(boardThreads.AsQueryable()); var boardController = new BoardController(boardThreadsRepoMock.Object, null, new RecaptchaMock(), null, null); await boardController.CreateThread(new SubmitViewModel { Text = "test" }, null); boardThreadsRepoMock.Verify(x => x.RemoveThread(oldestThread.Id), Times.Exactly(timesRemoveThreadCalled)); }
public async Task <IActionResult> StartDiscussion(long articleId) { await googleRecaptchaHelper.VerifyRecaptcha(Request, ModelState); if (ModelState.IsValid == false) { return(RedirectToAction("Index", "Error")); } var article = articleRepo.Articles.FirstOrDefault(a => a.Id == articleId); if (article == null) { return(RedirectToAction("Article", "Error")); } if (article.Discussion != null) { return(RedirectToAction("Thread", "Board", new { id = article.Discussion.Id })); } var thread = new BoardThread { SourceUrl = article.SourceUrl, Posts = new BoardPost[] { new BoardPost { Text = article.Title, Image = article.Image, DatePosted = DateTime.Now } } }; article.Discussion = thread; articleRepo.EditArticle(article); return(RedirectToAction("Thread", "Board", new { id = thread.Id })); }
public void AddThread(BoardThread thread) { context.BoardThreads.Add(thread); context.SaveChanges(); }
private bool MaxImagesCountReached(BoardThread thread) { return(thread.ImageCount > maxImagesInThread); }
public void NavigateToThread(BoardThread boardThread) { var navigation = ThreadNavigation.NavigateToThread(CurrentPage.BoardId, boardThread.Number); Shell.Navigate<ThreadViewModel>(navigation); }