public async Task AddTweetHandler(AddTweetDto request)
        {
            ClaimsPrincipal user      = _iHttpContextAccessor.HttpContext.User;
            int             creatorID = int.Parse(ClaimExtensions.GetUserId(user));

            var newTweet = new TweetEntity()
            {
                Content      = request.Content,
                CreatedAt    = DateTime.Now,
                CreatorId    = creatorID,
                LikeCount    = 0,
                RetweetCount = 0,
                IsRetweet    = false,
            };

            await _dbContext.Tweets.AddAsync(newTweet);

            await _dbContext.SaveChangesAsync();

            if (request.HashTags != null && request.HashTags.Count > 0)
            {
                var list = new List <TweetHashtagRelationEntity>();
                foreach (var hashtag in request.HashTags)
                {
                    var tag = await searchHashtag(hashtag);

                    if (tag is null)
                    {
                        tag            = new HashtagEntity();
                        tag.Content    = hashtag.Content.ToLower();
                        tag.UsageCount = 1;
                        await _dbContext.Hashtags.AddAsync(tag);

                        await _dbContext.SaveChangesAsync();
                    }
                    else
                    {
                        tag.UsageCount++;
                        _dbContext.Hashtags.Update(tag);
                        await _dbContext.SaveChangesAsync();
                    }

                    var relationht = new HashtagTweetRelationEntity();
                    relationht.HashtagId = tag.Id;
                    relationht.TweetId   = newTweet.Id;
                    await _dbContext.HashtagTweetRelations.AddAsync(relationht);

                    await _dbContext.SaveChangesAsync();


                    list.Add(new TweetHashtagRelationEntity()
                    {
                        TweetId   = newTweet.Id,
                        HashtagId = tag.Id,
                    });
                }
                await _dbContext.TweetHashtagRelations.AddRangeAsync(list);
            }
            await _dbContext.SaveChangesAsync();

            var relationtu = new UserTweetRelationEntity();

            relationtu.TweetId = newTweet.Id;
            relationtu.UserId  = creatorID;
            await _dbContext.UserTweetRelations.AddRangeAsync(relationtu);

            await _dbContext.SaveChangesAsync();
        }
 public async Task AddTweet(AddTweetDto request)
 {
     await _iTweetActionCommand.AddTweetHandler(request);
 }