Esempio n. 1
0
        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));
        }