コード例 #1
0
        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));
            }
        }
コード例 #2
0
        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);
        }
コード例 #3
0
        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);
            }
        }
コード例 #4
0
 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
 };