public async Task <IActionResult> Reply(string replyText, int?tweetId) { if (tweetId == null) { return(NotFound()); } _logger.LogInformation("Getting Tweet ({ID})", tweetId.Value); var replyTo = await _tweetService.GetTweetWithRepliesForEditingAsync(tweetId.Value); if (replyTo == null) { _logger.LogWarning("Tweet ({ID}) NOT FOUND", tweetId.Value); Response.StatusCode = (int)HttpStatusCode.InternalServerError; return(Json(new { Message = "Requested tweet was not found. Apparently it was deleted." })); } _logger.LogInformation("Getting authenticated User"); var user = await _userManager.GetUserAsync(User); if (user == null) { _logger.LogWarning("Authenticated User NOT FOUND"); return(NotFound(user)); } _logger.LogInformation("Inserting new Reply ({REPLY}) to Tweet ({ID})", replyText, replyTo.Id); // AddReplyAsync return created reply as a Tweet entity var replyFrom = await _tweetService.AddReplyAsync(replyText, user, replyTo); // Map the Tweet entity to the TweetViewModel var reply = _mapper.Map <TweetViewModel>(replyFrom); ViewData["CurrentUserSlug"] = user.Slug; return(PartialView("_Tweet", reply)); }