public async Task NotifyTransferWiseEvent(string authorizationCode, int resourceId)
        {
            using (var context = GetMainContext())
            {
                string token = context.PaymentProviderAccounts.WhereUser(UserId).FirstOrDefault().Token;

                using (var httpClient = new HttpClient())
                {
                    var request = new HttpRequestMessage(HttpMethod.Get, $"https://api.transferwise.com/v1/transfers/{resourceId}");
                    request.Headers.Authorization = new AuthenticationHeaderValue("Bearer", token);
                    var response = await httpClient.SendAsync(request);

                    var responseText = await response.Content.ReadAsStringAsync();

                    var transfer = JsonConvert.DeserializeObject <Model.Services.TrasnferWise.Transfer>(responseText);

                    var expense = new Model.Database.Main.Finance.Expense()
                    {
                        ValueId       = context.Expenses.NextValueId(UserId).ToString(),
                        Date          = DateTime.Now,
                        ExpenseTypeId = 1,
                        Amount        = transfer.TargetValue,
                        Comment       = transfer.Status,
                        CurrencyId    = context.GetCurrencyId(transfer.TargetCurrency, UserId),
                        NeedsReview   = true,
                        UserId        = 1002
                    };

                    if (transfer.TargetCurrency != transfer.SourceCurrency)
                    {
                        expense.ParentCurrencyId           = context.GetCurrencyId(transfer.SourceCurrency, UserId);
                        expense.ParentCurrencyExchangeRate = 1 / transfer.Rate;
                    }

                    context.Expenses.Add(expense);
                    await context.SaveChangesAsync();
                }
            }
        }
        private void ResolveTransaction(MainContext context, Model.Database.Main.Finance.Expense expense)
        {
            if (expense.Transaction is not null)
            {
                context.Transactions.Remove(expense.Transaction);
            }

            if (expense.PaymentTypeId == (int)Model.Constants.Database.PaymentType.Cash)
            {
                int?accountId = context.Accounts.SingleOrDefault(x => !x.BankId.HasValue && x.CurrencyId == expense.CurrencyId)?.Id;

                if (accountId.HasValue)
                {
                    var transaction = new Model.Database.Main.Finance.Transaction()
                    {
                        AccountId = accountId.Value,
                        Amount    = expense.Amount,
                        Created   = expense.Date
                    };
                    expense.Transaction = transaction;
                    context.Transactions.Add(transaction);
                }
            }
        }