Пример #1
0
 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 }));
 }
Пример #2
0
        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());
        }
Пример #3
0
        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));
            }
        }