public async Task <IActionResult> CreateThread(ThreadCreateDto threadCreateDto) { try { // get current logged in user var user = await _userManager.GetUserAsync(HttpContext.User); var threadToAdd = _mapper.Map <Thread>(threadCreateDto); // set thread creator to current logged in user threadToAdd.ApplicationUser = user; await _threadService.AddThreadToDatabase(threadToAdd); // create opening post var openingPostCreateDto = new PostCreateDto { Content = threadCreateDto.OpeningPost, TimePosted = threadCreateDto.TimeCreated }; var openingPost = _mapper.Map <Post>(openingPostCreateDto); openingPost.Thread = threadToAdd; await _postService.AddPostToDatabase(openingPost, user); return(GetAllThreadsByMostRecentPost()); } catch (Exception ex) { Console.WriteLine(ex); return(StatusCode(StatusCodes.Status500InternalServerError)); } }
public async Task <ActionResult> Create(ThreadCreateDto model, string onForum) { // This code is a big mess // Now I understand why is generating your own primary key with GUID better than letting database autogenerate it. if (!ModelState.IsValid) { return(View(model)); } var forum = await forumRepository.GetByNameAsync(onForum); var author = await accountRepository.GetByUsernameAsync(User.Identity.Name); var newThread = new Thread { Name = model.Name, AuthorId = author.Id, ForumId = forum.Id }; await threadRepository.AddAsync(newThread); newThread = await threadRepository.GetByNameAsync(model.Name); var newPost = new Post { Content = model.Post.Content, AuthorId = author.Id, ThreadId = newThread.Id }; await postRepository.AddAsync(newPost); return(RedirectToAction(onForum, "Forum", new { threadName = Server.UrlEncode(model.Name) })); }