Пример #1
0
        /// <summary>
        /// Remove a 'Like' from the Tweet if it's already exists
        /// or add new if it's not
        /// </summary>
        /// <param name="tweetId"></param>
        /// <param name="user"></param>
        /// <returns></returns>
        public async Task <int> UpdateLikes(int tweetId, TwitterCopyUser user)
        {
            var tweet = await _tweetRepository.GetTweetWithLikesAsync(tweetId);

            // Apply the user and tweet object from above to the new Like
            var like = new Like
            {
                Tweet = tweet,
                User  = user,
            };

            // Check if the user already has like on this tweet
            var dupe = tweet.Likes.FirstOrDefault(x => x.UserId.Equals(user.Id));

            if (dupe == null)
            {
                // If no duplicate was found
                // Add new like to the database
                _likeRepository.Add(like);
            }
            else
            {
                // If duplicate was found then
                // Delete dupe instead of like because
                // like doesn't have Id values
                _likeRepository.Delete(dupe);
            }

            await _likeRepository.SaveAsync();

            return(tweet.Likes.Count);
        }