public void SaveUserTweeter(string userId, TweeterDTO tweeter)
        {
            if (string.IsNullOrEmpty(userId))
            {
                throw new ArgumentNullException(nameof(userId));
            }

            var assignTweeterToUser = this.unitOfWork.TweeterRepository.All().FirstOrDefault(x => x.Id == tweeter.Id);

            if (assignTweeterToUser == null)
            {
                assignTweeterToUser = this.tweeterService.CreateTweeter(tweeter);
                var userTweeter = new UserTweeter
                {
                    UserId    = userId,
                    TweeterId = assignTweeterToUser.Id
                };

                this.unitOfWork.UsersTweeterRepository.Add(userTweeter);
                this.unitOfWork.SaveChanges();
            }
            else
            {
                if (assignTweeterToUser.IsDeleted)
                {
                    assignTweeterToUser.IsDeleted = false;
                    assignTweeterToUser.DeletedOn = null;

                    this.unitOfWork.SaveChanges();
                }

                if (!this.DbContainsUserTweeter(userId, tweeter.Id))
                {
                    var userTweeter = new UserTweeter
                    {
                        UserId    = userId,
                        TweeterId = assignTweeterToUser.Id
                    };

                    this.unitOfWork.UsersTweeterRepository.Add(userTweeter);
                    this.unitOfWork.SaveChanges();
                }
                else
                {
                    var restoreUserTweeter =
                        this.unitOfWork.UsersTweeterRepository.All().FirstOrDefault(x =>
                                                                                    x.TweeterId == tweeter.Id && x.UserId == userId && x.IsDeleted);

                    if (restoreUserTweeter != null)
                    {
                        restoreUserTweeter.IsDeleted = false;
                        restoreUserTweeter.DeletedOn = null;

                        this.unitOfWork.SaveChanges();
                    }
                }
            }
        }
        public Tweeter CreateTweeter(TweeterDTO tweeter)
        {
            if (tweeter == null)
            {
                throw new ArgumentNullException("Tweeter cannot be null!");
            }

            Tweeter newTweeter = new Tweeter
            {
                Id              = tweeter.Id,
                Name            = tweeter.Name,
                ScreenName      = tweeter.ScreenName,
                Location        = tweeter.Location,
                Description     = tweeter.Description,
                ProfileImageUrl = tweeter.ProfileImageUrl,
                FollowersCount  = tweeter.FollowersCount,
                StatusesCount   = tweeter.StatusesCount
            };

            this.UnitOfWork.TweeterRepository.Add(newTweeter);
            this.UnitOfWork.SaveChanges();

            return(newTweeter);
        }