public async Task <UserSignalsUnorderedEntity> GetAsync(string userId, SignalType signal, string itemId) { string rowKey = BuildRowKey(userId, signal); BoundStatement antiBoundStatement = _getStatement.Value.Bind(rowKey, true, itemId); BoundStatement boundStatement = _getStatement.Value.Bind(rowKey, false, itemId); RowSet antiRowset = await _session.Get().ExecuteAsync(antiBoundStatement); List <UserSignalsUnorderedEntity> antiResults = antiRowset.Select(r => _mapper.Map <Row, UserSignalsUnorderedEntity>(r)).OrderBy(r => r.DateTime).ToList(); UserSignalsUnorderedEntity lastAntiResult = antiResults.LastOrDefault(); RowSet rowset = await _session.Get().ExecuteAsync(boundStatement); List <UserSignalsUnorderedEntity> results = rowset.Select(r => _mapper.Map <Row, UserSignalsUnorderedEntity>(r)).OrderBy(r => r.DateTime).ToList(); UserSignalsUnorderedEntity lastResult = results.LastOrDefault(); if (lastResult == null) { return(null); } if (lastAntiResult == null) { return(lastResult); } // Compare dates return(lastResult.DateTime > lastAntiResult.DateTime ? lastResult : null); }
public async Task <bool> IsAbuseReportedAsync(string space, string itemId, string userId) { // Building composite userId to isolate different spaces of statistics userId = BuildGlobalId(space, userId); UserSignalsUnorderedEntity result = await _userSignalsUnorderedRepository.GetAsync(userId, SignalType.Abuse, itemId); return(result != null); }