示例#1
0
        // Get some transactions
        public async Task <List <Transaction> > GetTransactionsAsync()
        {
            List <Transaction> transactions = _cacheService.GetCache().Transactions;

            if (transactions.Count > 0)
            {
                // The transactions have already been retrieved
                return(transactions);
            }

            AccountsResponseDTO accountsResponseDTO = _cacheService.GetCache().AccountsResponseDTO;

            // If we don't already have the accounts, get them now.
            // (Or if they are no accounts try and get them again.)
            if (accountsResponseDTO == null || accountsResponseDTO.Accounts.Count == 0)
            {
                List <Account> result = await GetAccountsAsync();

                if (result == null)
                {
                    return(null);
                }
            }

            accountsResponseDTO = _cacheService.GetCache().AccountsResponseDTO;

            if (accountsResponseDTO == null)
            {
                return(null);
            }

            IEnumerable <Task <List <Transaction> > > tasks = accountsResponseDTO.Accounts.Select(i => GetAccountTransactions(i.AccountId));

            List <Transaction>[] results = await Task.WhenAll(tasks);

            foreach (List <Transaction> result in results)
            {
                if (result != null)
                {
                    transactions.AddRange(result);
                }
            }

            Cache cache = new Cache
            {
                Transactions        = transactions,
                AccountsResponseDTO = _cacheService.GetCache().AccountsResponseDTO,
                ExchangeResponseDTO = _cacheService.GetCache().ExchangeResponseDTO
            };

            _cacheService.SetCache(cache);

            return(transactions);
        }
示例#2
0
        public HttpRequestServiceTests()
        {
            trueLayerCredentialsOptions = Options.Create(trueLayerCredentials);
            dummyExchangeResponseDTO    = new ExchangeResponseDTO {
                AccessToken = dummyAccessToken
            };

            Account account1 = new Account {
                AccountId = "1"
            };
            Account account2 = new Account {
                AccountId = "2"
            };

            dummyAccountsResponseDTO = new AccountsResponseDTO
            {
                Accounts = new List <Account> {
                    account1, account2
                }
            };
            dummyCacheWithCodeAndAccessToken = new Cache {
                ExchangeResponseDTO = dummyExchangeResponseDTO
            };
            dummyCacheWithAccounts = new Cache
            {
                ExchangeResponseDTO = dummyExchangeResponseDTO,
                AccountsResponseDTO = dummyAccountsResponseDTO
            };

            Transaction transaction1 = new Transaction
            {
                Amount = -1.0m,
                TransactionCategory = "PURCHASE",
                Timestamp           = DateTime.Parse("2020-03-06T00:00:00+00:00")
            };

            Transaction transaction2 = new Transaction
            {
                Amount = 2.0m,
                TransactionCategory = "BILL_PAYMENT",
                Timestamp           = DateTime.Parse("2020-04-06T00:00:00+00:00")
            };

            dummyTransactions = new List <Transaction> {
                transaction1, transaction2
            };
            dummyTransactionsResponseDTO = new TransactionsResponseDTO {
                Transactions = dummyTransactions
            };
        }
示例#3
0
        // Get the users accounts
        public async Task <List <Account> > GetAccountsAsync()
        {
            string uri = _trueLayerCredentials.Value.BaseDataApiUrl + "/data/v1/accounts";

            AccountsResponseDTO responseObj =
                (AccountsResponseDTO) await DoRequest <AccountsResponseDTO>(HttpMethod.Get, uri, true, null);

            if (responseObj == null)
            {
                return(null);
            }

            Cache cache = new Cache
            {
                AccountsResponseDTO = responseObj,
                ExchangeResponseDTO = _cacheService.GetCache().ExchangeResponseDTO
            };

            _cacheService.SetCache(cache);

            return(responseObj.Accounts);
        }