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);
        }
Exemple #2
0
        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);
        }