public async Task <IActionResult> CreateThreadAsync(ThreadViewModel thread, Guid categoryId, int pageIndex, int pageSize) { if (ModelState.IsValid && categoryId != Guid.Empty) { await _threadService.CreateAsync(thread); } return(RedirectToAction("ViewCategory", "Category", new { categoryId, pageIndex, pageSize })); }
public async Task <ActionResult> Post([FromBody] CreateThreadViewModel threadViewModel) { if (!ModelState.IsValid) { return(BadRequest()); } var threadDto = _mapper.Map <CreateThreadViewModel, ThreadDto>(threadViewModel); await _threadService.CreateAsync(threadDto); return(Ok()); }
public async Task <IActionResult> Create(ThreadAnonymousCreateViewModel viewModel) { if (ModelState.IsValid) { var category = await _categoryService.GetAsync(viewModel.CategoryAlias); var threadDto = _mapper.Map <ThreadDto>(viewModel); threadDto.BumpLimit = category.DefaultBumpLimit; threadDto.ShowThreadLocalUserHash = category.DefaultShowThreadLocalUserHash; threadDto.CategoryId = category.Id; var threadId = await _threadService.CreateAsync(threadDto); var postDto = _mapper.Map <PostDto>(viewModel); postDto.ThreadId = threadId; postDto.UserIpAddress = UserIpAddress.ToString(); postDto.UserAgent = UserAgent; try { var postId = await _postService.CreateAsync(viewModel.Attachments, postDto); } catch (Exception ex) { _logger.LogError($"Can't create new post due to exception: {ex}. Thread creation failed."); await _threadService.DeleteAsync(threadId); throw; } return(RedirectToAction("Details", "Threads", new { categoryAlias = viewModel.CategoryAlias, threadId = threadId })); } else { ViewBag.ErrorMessage = ModelState.ModelErrorsToString(); return(View(viewModel)); } }