Exemplo n.º 1
0
        public async Task AddAccounts(AddAccounts command)
        {
            try
            {
                var exchangeTokenResponse = await _plaid.ExchangeToken(command.PublicToken, _tokenSource.Token);

                if (exchangeTokenResponse != null && !string.IsNullOrEmpty(exchangeTokenResponse.AccessToken))
                {
                    List <IEvent> events = new List <IEvent>();

                    var bankAddedEvent = new BankAdded(command.BankId, command.BankName, exchangeTokenResponse.AccessToken, command.BoardId);
                    events.Add(bankAddedEvent);

                    var config          = _settings.Get <TransactionWebhookConfig>(TransactionWebhookConfig.SettingsPrefix);
                    var url             = config.Url.Replace("{boardid}", command.BoardId);
                    var webhookResponse = await _plaid.UpdateWebhook(exchangeTokenResponse.AccessToken, url, _tokenSource.Token);

                    var bankWebhookAdded = new BankWebhookAdded(command.BankId, webhookResponse?.Item?.Webhook, command.BoardId);
                    events.Add(bankWebhookAdded);

                    var authResponse = await _plaid.RetrieveBalances(exchangeTokenResponse.AccessToken, _tokenSource.Token);

                    if (authResponse?.Accounts?.Any() ?? false)
                    {
                        var accountAddedEvents = authResponse.Accounts.Select(a =>
                                                                              new AccountAdded(command.BoardId, exchangeTokenResponse.AccessToken, a.AccountId, command.BankName, command.BankId, a.Name, a.Type, a.OfficialName, a.SubType, a.Balances.Available, a.Balances.Current, a.Balances.Limit)
                                                                              );
                        events.AddRange(accountAddedEvents);
                        RaiseEvents(events);
                    }
                }
            }
            catch (Exception ex)
            {
                throw;
            }
        }
Exemplo n.º 2
0
 public void Apply(BankWebhookAdded e)
 {
     Banks[e.BankId].AddWebhook(e.Url);
 }