private async Task CreateNewSuspiciousAccountReport(ReportSuspiciousActivity request, Reporter reporter, SuspiciousAccount suspiciousAccount, CancellationToken cancellationToken) { var suspiciousAccountReport = new SuspiciousAccountReport() { ReportDate = DateTime.Now, ReporterId = reporter.Id, SuspiciousAccountId = suspiciousAccount.Id, TweetId = request.ReporterTweetId, TweetContent = request.ReporterTweetContent, IsViaDirect = request.IsViaDirect }; await _db.SuspiciousAccountReports.AddAsync(suspiciousAccountReport); await _db.SaveChangesAsync(cancellationToken); }
private async Task ApplyBlockListAndLog(ApplicationUser rostamBotUser, List <SuspiciousAccountDto> suspiciousAccounts, bool shouldBlock, CancellationToken cancellationToken) { //ToDo:remove magic strings var userAccessToken = await _userManager.GetAuthenticationTokenAsync(rostamBotUser, "Twitter", "UserAccessToken"); var userAccessSecret = await _userManager.GetAuthenticationTokenAsync(rostamBotUser, "Twitter", "UserAccessSecret"); if (string.IsNullOrEmpty(userAccessToken) || string.IsNullOrEmpty(userAccessSecret)) { return; } var blockListApplyResult = _twitterBotService.BlockUsers(userAccessToken, userAccessSecret, suspiciousAccounts, shouldBlock: true); foreach (var blockResult in blockListApplyResult) { SuspiciousAccountDto suspiciousAccount = blockResult.Key; var blockHistory = new SuspicousAccountBlockHistory() { ActionDate = DateTime.Now, IsBlocked = true, SuspiciousAccountId = suspiciousAccount.Id, UserId = rostamBotUser.Id }; await _db.SuspicousAccountBlockHistories.AddAsync(blockHistory); } await _db.SaveChangesAsync(cancellationToken); }
public async Task <Unit> Handle(ChangeBlockStatus request, CancellationToken cancellationToken) { var suspiciousAccount = await _db.SuspiciousAccounts .SingleOrDefaultAsync(c => c.Id == request.SuspiciousAccountId, cancellationToken); if (suspiciousAccount == null) { throw new NotFoundException(nameof(SuspiciousAccount), request.SuspiciousAccountId); } suspiciousAccount.ShouldBlock = request.BlockStatus; await _db.SaveChangesAsync(cancellationToken); //ToDo: use AutoMapper var suspiciousAccountDto = new SuspiciousAccountDto() { Id = suspiciousAccount.Id, TwitterUserId = suspiciousAccount.TwitterUserId, TwitterScreenName = suspiciousAccount.TwitterScreenName, TwitterJoinDate = suspiciousAccount.TwitterJoinDate }; await _mediator.Publish( new ChangeBlockStatusSaved { SuspiciousAccountDto = suspiciousAccountDto, BlockStatus = request.BlockStatus }, cancellationToken); return(Unit.Value); }
public async Task <Unit> Handle(AddSuspiciousAccount request, CancellationToken cancellationToken) { var twitterUserInfo = _rostamBotManagerService.GetSuspiciousAccountInfo(request.TwitterScreenName); if (await _db.SuspiciousAccounts.AnyAsync(x => x.TwitterUserId == twitterUserInfo.TwitterUserId)) { throw new AppException($"{request.TwitterScreenName} is already in block list"); } var newSuspiciousAccount = new SuspiciousAccount() { ShouldBlock = true, TwitterJoinDate = twitterUserInfo.TwitterJoinDate, TwitterScreenName = twitterUserInfo.TwitterScreenName, TwitterUserId = twitterUserInfo.TwitterUserId }; await _db.SuspiciousAccounts.AddAsync(newSuspiciousAccount); await _db.SaveChangesAsync(cancellationToken); var suspiciousAccountDto = new SuspiciousAccountDto() { Id = newSuspiciousAccount.Id, TwitterUserId = newSuspiciousAccount.TwitterUserId, TwitterScreenName = newSuspiciousAccount.TwitterScreenName, TwitterJoinDate = newSuspiciousAccount.TwitterJoinDate }; await _mediator.Publish( new ChangeBlockStatusSaved { SuspiciousAccountDto = twitterUserInfo, BlockStatus = true }, cancellationToken); return(Unit.Value); }