Task <Abstractions.SearchResult <CardCollectionModel> > ICardCollectionService.GetCardCollectionAsync(Abstractions.CardCollectionSearchFilter filter, CancellationToken cancellationToken) { return(GetCardCollectionInternalAsync(filter, cancellationToken)); }
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, }); }