Beispiel #1
0
        public async Task <InvoicesReport> GetByCardHolderIdAsync(int cardHolderId)
        {
            var cardHolder = await _cardHolders.GetByIdAsync(cardHolderId);

            var sended = _db.Invoices.Where(x => cardHolder.Wallets.Select(w => w.Id).Contains(x.FromWalletId.Value)).ToArray();

            /*await Task.WhenAll(_db.Invoices
             * .Where(x => cardHolder.Wallets.Select(w => w.Id).Contains(x.FromWalletId))
             * .Select(async x =>
             * {
             *  x.FromWallet = await _wallets.GetByIdAsync(x.FromWalletId);
             *  x.ToWallet = await _wallets.GetByIdAsync(x.ToWalletId);
             *  return x;
             * }));*/

            var received = _db.Invoices.Where(x => cardHolder.Wallets.Select(w => w.Id).Contains(x.ToWalletId.Value)).ToArray();

            /*await Task.WhenAll(_db.Invoices
             * .Where(x => cardHolder.Wallets.Select(w => w.Id).Contains(x.ToWalletId))
             * .Select(async x => {
             *  x.FromWallet = await _wallets.GetByIdAsync(x.FromWalletId);
             *  x.ToWallet = await _wallets.GetByIdAsync(x.ToWalletId);
             *  return x;
             * }));*/

            return(new InvoicesReport
            {
                CardHolderId = cardHolderId,
                CardHolder = cardHolder,
                Sended = sended,
                Received = received
            });
        }
Beispiel #2
0
        public async Task <InvoicesReport> GetByCardHolderIdAsync(int cardHolderId)
        {
            var cardHolder = await _cardHolders.GetByIdAsync(cardHolderId);

            cardHolder.Wallets = cardHolder.Wallets.Select(x => { x.CardHolder = null; return(x); });

            var query = _db.Invoices
                        .AsNoTracking()
                        .Include(x => x.FromWallet)
                        .ThenInclude(x => x.Currency)
                        .Include(x => x.ToWallet)
                        .ThenInclude(x => x.Currency)
                        .Include(X => X.Status);

            var sended = await query.Where(x => cardHolder.Wallets
                                           .Select(w => w.Id)
                                           .Contains(x.FromWalletId.Value)
                                           ).ToArrayAsync();

            var received = await query.Where(x => cardHolder.Wallets
                                             .Select(w => w.Id)
                                             .Contains(x.ToWalletId.Value)
                                             ).ToArrayAsync();

            return(new InvoicesReport
            {
                CardHolderId = cardHolderId,
                CardHolder = cardHolder,
                Sended = sended,
                Received = received
            });
        }
 public async Task <IActionResult> ById([FromRoute] int id)
 {
     return(Ok(await _cardHolders.GetByIdAsync(id)));
 }