Skip to content

Commit

Permalink
Feature/remove bankconfiguration from bankservice (#15)
Browse files Browse the repository at this point in the history
* moved configuration of banks from bankservice to plugin

* fixed kundeforhold response

* kundeforhold response casing
  • Loading branch information
erlendoksvoll authored Jan 9, 2025
1 parent 4f18812 commit cfa0b14
Show file tree
Hide file tree
Showing 4 changed files with 35 additions and 28 deletions.
8 changes: 1 addition & 7 deletions src/Altinn.Dan.Plugin.Banking/Metadata.cs
Original file line number Diff line number Diff line change
Expand Up @@ -102,13 +102,7 @@ public List<EvidenceCode> GetEvidenceCodes()
EvidenceParamName = "TilDato",
ParamType = EvidenceParamType.DateTime,
Required = false
},
new EvidenceParameter()
{
EvidenceParamName = "SkipKAR",
ParamType = EvidenceParamType.Boolean,
Required = false
},
},
new EvidenceParameter()
{
EvidenceParamName = "ReferanseId",
Expand Down
22 changes: 22 additions & 0 deletions src/Altinn.Dan.Plugin.Banking/Models/BankResponse.cs
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
using System;
using System.Collections.Generic;
using Altinn.Dan.Plugin.Banking.Clients.V2;
using Newtonsoft.Json;
using AccountDetailV2 = Altinn.Dan.Plugin.Banking.Clients.V2.AccountDetail;
using TransactionV2 = Altinn.Dan.Plugin.Banking.Clients.V2.Transaction;
namespace Altinn.Dan.Plugin.Banking.Models
Expand All @@ -17,6 +18,27 @@ public class BankInfo
public List<AccountV2> Accounts { get; set; }

public bool HasErrors { get; set; } = false;

}

[JsonObject("bankRelations")]
public class BankRelations
{
[JsonProperty("banks")]
public List<BankRelation> Banks { get; set; } = new List<BankRelation>();
}

[JsonObject("bankRelation")]
public class BankRelation
{
[JsonProperty("bankName")]
public string BankName { get; set; }

[JsonProperty("isImplemented")]
public bool IsImplemented { get; set; }

[JsonProperty("organizationNumber")]
public string OrganizationNumber { get; set; }
}

public class Account
Expand Down
30 changes: 10 additions & 20 deletions src/Altinn.Dan.Plugin.Banking/Plugin.cs
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ public Plugin(IOptions<ApplicationSettings> settings, ILoggerFactory loggerFacto
public async Task<HttpResponseData> GetBanktransaksjoner(
[HttpTrigger(AuthorizationLevel.Function, "post")] HttpRequestData req,
FunctionContext context)
{
{
var evidenceHarvesterRequest = await req.ReadFromJsonAsync<EvidenceHarvesterRequest>();
return await EvidenceSourceResponse.CreateResponse(req, () => GetEvidenceValuesBankTransaksjoner(evidenceHarvesterRequest));
}
Expand Down Expand Up @@ -141,7 +141,7 @@ private async Task<List<EvidenceValue>> GetKontotransaksjoner(EvidenceHarvesterR

var filteredEndpoint = bankEndpoints.Where(item => _settings.ImplementedBanks.Contains(item.OrgNo) && item.OrgNo == orgno && item.Version.ToUpper() == "V2").FirstOrDefault();
var ecb = new EvidenceBuilder(new Metadata(), "Kontotransaksjoner");

var bankConfig = CreateBankConfigurations(filteredEndpoint);
var transactions = await _bankService.GetTransactionsForAccount(ssn, bankConfig, fromDate, toDate, accountInfoRequestId, accountRef);

Expand All @@ -160,7 +160,7 @@ private async Task<List<EvidenceValue>> GetKontotransaksjoner(EvidenceHarvesterR
}
}

private async Task<List<EvidenceValue>> GetKundeforhold(EvidenceHarvesterRequest evidenceHarvesterRequest)
private async Task<List<EvidenceValue>> GetEvidenceValuesKundeforhold(EvidenceHarvesterRequest evidenceHarvesterRequest)
{
var accountInfoRequestId = Guid.NewGuid();
var correlationId = Guid.NewGuid();
Expand Down Expand Up @@ -200,24 +200,14 @@ private async Task<List<EvidenceValue>> GetKundeforhold(EvidenceHarvesterRequest
throw new EvidenceSourceTransientException(Banking.Metadata.ERROR_KAR_NOT_AVAILABLE_ERROR, $"Request to KAR timed out (accountInfoRequestId: {accountInfoRequestId}, correlationID: {correlationId})");
}

var filteredEndpoints = endpoints
.Where(x => karResponse.Banks.Select(e => e.OrganizationID).ToHashSet().Contains(x.OrgNo))
.Where(x => _settings.ImplementedBanks.Contains(x.OrgNo))
.Where(x => x.Version.ToUpper() != "V1")
.Select(x => new EndpointExternal
{
OrgNo = x.OrgNo,
Env = x.Env,
Name = x.Name,
Url = null,
Version = x.Version
})
.ToList();
var response = new BankRelations();
foreach(var relation in karResponse.Banks)
{
response.Banks.Add(new BankRelation() { BankName = relation.BankName, OrganizationNumber = relation.OrganizationID, IsImplemented = _settings.ImplementedBanks.Contains(relation.OrganizationID) });
}

var ecb = new EvidenceBuilder(new Metadata(), "Kundeforhold");

ecb.AddEvidenceValue("default", JsonConvert.SerializeObject(filteredEndpoints), "", false);

ecb.AddEvidenceValue("default", JsonConvert.SerializeObject(response), "", false);
return ecb.GetEvidenceValues();
}
catch (Exception e)
Expand Down Expand Up @@ -301,6 +291,7 @@ private async Task<List<EndpointExternal>> GetBankEndpoints()

private Dictionary<string, BankConfig> CreateBankConfigurations(List<EndpointExternal> banks)
{

Dictionary<string, BankConfig> bankConfigs = [];
foreach (var bank in banks)
{
Expand Down Expand Up @@ -417,7 +408,6 @@ private async Task<List<EvidenceValue>> GetEvidenceValuesBankTransaksjoner(Evide
filteredEndpoints.RemoveAll(p => p.Version.ToUpper() == "V1");

var ecb = new EvidenceBuilder(new Metadata(), "Banktransaksjoner");

var bankConfigs = CreateBankConfigurations(filteredEndpoints);
BankResponse bankResult = karResponse.Banks.Count > 0 ? await _bankService.GetAccounts(ssn, bankConfigs, fromDate, toDate, accountInfoRequestId) : new() { BankAccounts = new() };

Expand Down
3 changes: 2 additions & 1 deletion src/Altinn.Dan.Plugin.Banking/Services/BankService.cs
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@ public BankService(ILoggerFactory loggerFactory, IMaskinportenService maskinport
_settings = applicationSettings.Value;
}


public async Task<BankResponse> GetAccounts(string ssn, Dictionary<string, BankConfig> bankList, DateTimeOffset? fromDate, DateTimeOffset? toDate, Guid accountInfoRequestId, bool includeTransactions = true)
{
BankResponse bankResponse = new BankResponse { BankAccounts = [] };
Expand Down Expand Up @@ -96,7 +97,6 @@ private async Task<BankInfo> InvokeBank(string ssn, BankConfig bank, DateTimeOff
};
var accountListTimeout = new CancellationTokenSource(TimeSpan.FromSeconds(AccountListRequestTimeoutSecs));
var accounts = await GetAllAccounts(bankClient, bank, accountInfoRequestId, ssn, fromDate, toDate);

var x = await GetAccountDetailsV2(bankClient, accounts, bank, accountInfoRequestId, fromDate, toDate, includeTransactions);
return x;
}
Expand Down Expand Up @@ -293,6 +293,7 @@ public async Task<Transactions> GetTransactionsForAccount(string ssn, BankConfig

_logger.LogInformation("Getting transactions: bank {BankName} accountrefence {AccountReference} dob {DateOfBirth} accountinforequestid {AccountInfoRequestId} correlationid {CorrelationId}",
bankConfig.Name, accountReference, ssn[..6], accountInfoRequestId, correlationId);

var token = await _maskinportenService.GetToken(_settings.Jwk, bankConfig.MaskinportenEnv, _settings.ClientId, _settings.BankScope, bankConfig.BankAudience);

bankConfig.Client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", token.AccessToken);
Expand Down

0 comments on commit cfa0b14

Please sign in to comment.