Exemplo n.º 1
0
 Task <Abstractions.SearchResult <CardCollectionModel> > ICardCollectionService.GetCardCollectionAsync(Abstractions.CardCollectionSearchFilter filter, CancellationToken cancellationToken)
 {
     return(GetCardCollectionInternalAsync(filter, cancellationToken));
 }
Exemplo n.º 2
0
        private async Task <Abstractions.SearchResult <CardCollectionModel> > GetCardCollectionInternalAsync(Abstractions.CardCollectionSearchFilter filter, CancellationToken cancellationToken)
        {
            var cardCollections = await _cardCollectionRepository.FindCardCollectionsAsync(
                new Data.Abstractions.CardCollectionSearchFilter
            {
                CardName = filter.Name,
                Ids      = filter.Ids?.ToArray(),
                UserId   = filter.UserId,
            },
                cancellationToken : cancellationToken
                );

            var results = cardCollections.Results.Select(_cardCollectionDataMapper.Map).ToArray();

            var cardIds = results.Select(x => x.CardId).ToArray();

            var cardResults = await _cardRepository.FindCardsAsync(
                new Data.Abstractions.CardSearchFilter
            {
                Ids    = cardIds,
                UserId = filter.UserId,
            },
                cancellationToken : cancellationToken
                );

            var cards = cardResults.Results;

            foreach (var res in results)
            {
                res.Card = cards.FirstOrDefault(x => x.Id == res.CardId);
            }

            return(new Abstractions.SearchResult <CardCollectionModel>
            {
                Count = cardCollections.TotalCount,
                Results = results,
            });
        }