public async Task <IActionResult> PostTweet([FromBody] CreateTweetRequest request) { try { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } var userEmail = User.FindFirst(ClaimTypes.NameIdentifier).Value; var serviceResponse = await _tweetsService.CreateTweet(userEmail, request); if (!_tweetsService.State.IsValid) { return(ServiceResponseDispatcher.ExecuteServiceResponse(this, _tweetsService.State.TypeOfError, _tweetsService.State.ErrorMessage)); } return(Ok(serviceResponse)); } catch (Exception ex) { return(StatusCode(500, ex.Message)); } }
public async Task <GenericResult <tweetModels.Tweet, string> > CreateTweet(CreateTweetRequest createTweetRequest) { if (createTweetRequest is null) { throw new System.ArgumentNullException(nameof(createTweetRequest)); } var result = new GenericResult <tweetModels.Tweet, string>(); if (string.IsNullOrWhiteSpace(createTweetRequest.Content)) { result.Error = "Content cannot be empty"; return(result); } var tweet = CreateTweetFromCreateTweetRequest(createTweetRequest); await _tweetRepository.Create(tweet); var tweetEvent = new TweetEvent { Type = TweetEventType.Created, TweetId = tweet.Id }; _rabbitMqClient.PushToExchange(Constants.TweetsExchangeName, tweetEvent); result.SuccessResult = tweet; return(result); }
public async Task <TweetDTO> CreateTweet(string userEmail, CreateTweetRequest request) { try { var user = await _unitOfWork.UserRepository.GetUserAsync(userEmail); var tweet = new Tweet() { Author = user, DateCreated = DateTime.Now, MessageData = request.MesssageData }; //user.Tweets.Add(tweet); _unitOfWork.TweetRepository.CreateTweet(tweet); await _unitOfWork.CommitAsync(); return(Mapper.Map <Tweet, TweetDTO>(tweet)); } catch (Exception ex) { State.ErrorMessage = ex.Message; State.TypeOfError = TypeOfServiceError.ServiceError; return(null); } }
private tweetModels.Tweet CreateTweetFromCreateTweetRequest(CreateTweetRequest createTweetRequest) => new tweetModels.Tweet { Id = _identityFactory.NextId(), AuthorId = createTweetRequest.AuthorId, Content = createTweetRequest.Content, ParentTweetId = createTweetRequest.ParentTweetId, QuotedTweetId = createTweetRequest.QuotedTweetId, RetweetedTweetId = createTweetRequest.RetweetedTweetId };