示例#1
0
        public async Task <Retweet> Create(Retweet retweet)
        {
            RetweetModel model = await _dbContext.Retweet
                                 .FirstOrDefaultAsync(r => r.TweetId == retweet.TweetId && r.UserId == retweet.UserId);

            if (model != null)
            {
                throw new ArgumentException("Retweet already exist");
            }

            model = new RetweetModel
            {
                UserId  = retweet.UserId,
                TweetId = retweet.TweetId
            };

            _dbContext.Add <RetweetModel>(model);
            await _dbContext.SaveChangesAsync();

            return(new Retweet {
                Id = model.Id,
                UserId = model.UserId,
                TweetId = model.TweetId
            });
        }
示例#2
0
        public async Task <bool> IsRetweeted(string userId, int tweetId)
        {
            RetweetModel model = await _dbContext.Retweet
                                 .FirstOrDefaultAsync(r => r.UserId == userId && r.TweetId == tweetId);

            if (model == null)
            {
                return(false);
            }

            return(true);
        }
示例#3
0
        public async Task Remove(Retweet retweet)
        {
            RetweetModel model = await _dbContext.Retweet
                                 .FirstOrDefaultAsync(r => r.UserId == retweet.UserId && r.TweetId == retweet.TweetId);

            if (model == null)
            {
                throw new ArgumentException("Retweet not foud");
            }

            _dbContext.Remove <RetweetModel>(model);
            await _dbContext.SaveChangesAsync();
        }
示例#4
0
        public async Task <Retweet> GetInfo(Retweet retweet)
        {
            RetweetModel model = await _dbContext.Retweet
                                 .Include(r => r.User)
                                 .Include(r => r.Tweet)
                                 .FirstOrDefaultAsync(r => r.UserId == retweet.UserId && r.TweetId == retweet.TweetId);

            if (model == null)
            {
                throw new ArgumentNullException("Retweet not found while retrieving info.");
            }

            return(new Retweet {
                Id = model.Id,
                TweetId = model.TweetId,
                UserId = model.UserId,
                User = model.User,
                Tweet = new Tweet {
                    Id = model.Tweet.Id, Text = model.Tweet.Text, UserId = model.UserId
                }
            });
        }
示例#5
0
        public async Task Toggle(Retweet retweet)
        {
            AppUser user = _dbContext.Users.FirstOrDefault(u => u.Id == retweet.UserId);

            if (user == null)
            {
                throw new ArgumentNullException("User not found");
            }

            TweetModel tweetModel = _dbContext.Tweet
                                    .FirstOrDefault(t => t.Id == retweet.TweetId && t.UserId != retweet.UserId);

            if (tweetModel == null)
            {
                throw new ArgumentNullException("Invalid tweet");
            }

            RetweetModel model = await _dbContext.Retweet
                                 .FirstOrDefaultAsync(r => r.UserId == retweet.UserId && r.TweetId == retweet.TweetId);

            if (model != null)
            {
                _dbContext.Remove <RetweetModel>(model);
                await _dbContext.SaveChangesAsync();

                return;
            }

            model = new RetweetModel {
                TweetId = retweet.TweetId,
                UserId  = retweet.UserId
            };

            _dbContext.Add <RetweetModel>(model);
            await _dbContext.SaveChangesAsync();
        }