public async Task <bool> CopyDeckAsync(Guid userId, Guid deckId)
        {
            var deck = await deckRepository.FindByIdAsync(deckId);

            if (deck == null)
            {
                return(false);
            }

            var newDeck = new DeckEntity(userId, deck.Title);
            var result  = await deckRepository.InsertAsync(newDeck);

            var cards = await cardRepository.GetCardsByDeckAsync(deck.Id);

            if (result == null || cards == null)
            {
                return(false);
            }

            var tasks = cards.Select(c => Task.Run(() =>
                                                   cardRepository.InsertAsync(new CardEntity(result.Id, c.Question, c.Answer))
                                                   ));
            var results = await Task.WhenAll(tasks);

            return(results.All(c => c != null));
        }
Exemple #2
0
        public static async Task <bool> IsUsersDeckAsync(this IDeckRepository repository, Guid deckId, Guid userId)
        {
            var deck = await repository.FindByIdAsync(deckId).ConfigureAwait(false);

            return(deck != null && deck.UserId == userId);
        }