Пример #1
0
        public async Task <IEnumerable <DomainItemSignal> > GetItemLikesSequenceAsync(string space, string itemId, int pageSize)
        {
            // Building composite itemId to isolated different spaces of statistics
            itemId = BuildGlobalId(space, itemId);

            IEnumerable <ItemSignalsEntity> antiResults = await _itemSignalsRepository.GetAntiSequenceAsync(itemId, SignalType.Like, pageSize);

            IEnumerable <ItemSignalsEntity> results = await _itemSignalsRepository.GetSequenceAsync(itemId, SignalType.Like, pageSize);

            // Filter cancelled signals
            ILookup <string, ItemSignalsEntity> filter = antiResults.ToLookup(i => i.UserId);

            results = results.Where(r => !filter.Contains(r.UserId) || filter[r.UserId].All(i => i.DateTime < r.DateTime));

            // Project results
            return(results.Select(s => _mapper.Map <ItemSignalsEntity, DomainItemSignal>(s)));
        }