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);
        }
Example #2
0
        /// <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";
            }
        }