public async Task SendDailyEmail() { string accountsJson = Environment.GetEnvironmentVariable("accounts"); List <InstitutionAccount> accounts = JsonConvert.DeserializeObject <List <InstitutionAccount> >(accountsJson); var plaidApi = new PlaidApi.PlaidApi(plaid_client_id: Environment.GetEnvironmentVariable("plaid_client_id"), plaid_secret: Environment.GetEnvironmentVariable("plaid_secret"), environment: PlaidEnvironment.Development, clientApp: "TransactionDigestEmailer"); // get the transactions for yesterday for each account // its not perfect, if an account has issues later days won't catch up on those transactions but this is easy var accountTransactionResultsTasks = accounts .Select(async a => { var result = new DigestItem { InstitutionAccount = a }; try { result.Transactions = await plaidApi.GetTransactionsAsync(access_token: a.AccessToken, startDate: DateTime.Today.AddDays(-1), endDate: DateTime.Today.AddDays(-1)); } catch (Exception ex) { result.Exception = ex; } return(result); }); var accountTransactionResults = await Task.WhenAll(accountTransactionResultsTasks); await SendEmail(accountTransactionResults); }
/// <summary> /// Gets the digest of the specified file. /// </summary> /// <param name="item">The item to calculate the digest for.</param> private void GetDigest(DigestItem item) { var directory = Path.GetDirectoryName(this.GetType().Assembly.Location); var filepath = Path.Combine(directory, item.Filepath); if (File.Exists(filepath)) { item.Digest = DigestUtils.GetRipemd160(filepath).AddSpace(4).Value; } else { item.Digest = "nicht gefunden"; } }