Added BankAccess, BankAccount, messageNumber, messageType and messageWithoutSensitiveData to MessageLogEntry
This commit is contained in:
parent
a33f31df02
commit
ef1177c76f
|
@ -6,10 +6,18 @@ import kotlinx.datetime.Instant
|
||||||
open class MessageLogEntry(
|
open class MessageLogEntry(
|
||||||
open val type: MessageLogEntryType,
|
open val type: MessageLogEntryType,
|
||||||
open val message: String,
|
open val message: String,
|
||||||
open val messageTrace: String? = null,
|
open val messageWithoutSensitiveData: String? = null,
|
||||||
open val error: Throwable? = null,
|
open val error: Throwable? = null,
|
||||||
open val time: Instant = Clock.System.now(),
|
open val time: Instant = Clock.System.now(),
|
||||||
|
|
||||||
|
val messageNumberString: String? = null,
|
||||||
|
val messageNumber: Int? = null,
|
||||||
|
|
||||||
|
val jobType: String? = null,
|
||||||
|
val messageCategory: String? = null,
|
||||||
|
|
||||||
val bank: BankAccess? = null, // TODO: make non-null
|
val bank: BankAccess? = null, // TODO: make non-null
|
||||||
val account: BankAccount? = null
|
val account: BankAccount? = null
|
||||||
)
|
) {
|
||||||
|
override fun toString() = "$messageNumberString $jobType $messageCategory $type $message"
|
||||||
|
}
|
|
@ -56,7 +56,7 @@ open class FinTs4kBankingClient(
|
||||||
Triple(account, parameter, response)
|
Triple(account, parameter, response)
|
||||||
}
|
}
|
||||||
|
|
||||||
return mapper.map(responses)
|
return mapper.map(bank, responses)
|
||||||
}
|
}
|
||||||
|
|
||||||
return Response.error(ErrorType.NoneOfTheAccountsSupportsRetrievingData, "Keines der Konten unterstützt das Abholen der Umsätze oder des Kontostands") // TODO: translate
|
return Response.error(ErrorType.NoneOfTheAccountsSupportsRetrievingData, "Keines der Konten unterstützt das Abholen der Umsätze oder des Kontostands") // TODO: translate
|
||||||
|
|
|
@ -7,6 +7,7 @@ import kotlinx.datetime.toLocalDateTime
|
||||||
import net.codinux.banking.client.model.*
|
import net.codinux.banking.client.model.*
|
||||||
import net.codinux.banking.client.model.AccountTransaction
|
import net.codinux.banking.client.model.AccountTransaction
|
||||||
import net.codinux.banking.client.model.Amount
|
import net.codinux.banking.client.model.Amount
|
||||||
|
import net.codinux.banking.client.model.MessageLogEntry
|
||||||
import net.codinux.banking.client.model.MessageLogEntryType
|
import net.codinux.banking.client.model.MessageLogEntryType
|
||||||
import net.codinux.banking.client.model.extensions.EuropeBerlin
|
import net.codinux.banking.client.model.extensions.EuropeBerlin
|
||||||
import net.codinux.banking.client.model.tan.*
|
import net.codinux.banking.client.model.tan.*
|
||||||
|
@ -32,7 +33,6 @@ import net.codinux.banking.fints.messages.datenelemente.implementierte.tan.TanGe
|
||||||
import net.codinux.banking.fints.messages.datenelemente.implementierte.tan.TanMedium
|
import net.codinux.banking.fints.messages.datenelemente.implementierte.tan.TanMedium
|
||||||
import net.codinux.banking.fints.messages.datenelemente.implementierte.tan.TanMediumStatus
|
import net.codinux.banking.fints.messages.datenelemente.implementierte.tan.TanMediumStatus
|
||||||
import net.codinux.banking.fints.model.*
|
import net.codinux.banking.fints.model.*
|
||||||
import net.codinux.banking.fints.model.MessageLogEntry
|
|
||||||
import net.codinux.banking.fints.serialization.FinTsModelSerializer
|
import net.codinux.banking.fints.serialization.FinTsModelSerializer
|
||||||
import net.codinux.banking.fints.transactions.swift.model.Holding
|
import net.codinux.banking.fints.transactions.swift.model.Holding
|
||||||
import net.dankito.banking.banklistcreator.prettifier.BankingGroupMapper
|
import net.dankito.banking.banklistcreator.prettifier.BankingGroupMapper
|
||||||
|
@ -102,17 +102,17 @@ open class FinTs4kMapper {
|
||||||
mapError(response, mapMessageLog(response))
|
mapError(response, mapMessageLog(response))
|
||||||
}
|
}
|
||||||
|
|
||||||
open fun map(responses: List<Triple<BankAccount, GetAccountDataParameter, net.dankito.banking.client.model.response.GetAccountDataResponse>>): Response<List<GetTransactionsResponse>> {
|
open fun map(bank: BankAccess, responses: List<Triple<BankAccount, GetAccountDataParameter, net.dankito.banking.client.model.response.GetAccountDataResponse>>): Response<List<GetTransactionsResponse>> {
|
||||||
val type = if (responses.all { it.third.successful }) ResponseType.Success else ResponseType.Error
|
val type = if (responses.all { it.third.successful }) ResponseType.Success else ResponseType.Error
|
||||||
|
|
||||||
// TODO: update BankAccess and BankAccount objects according to retrieved data
|
// TODO: update BankAccess and BankAccount objects according to retrieved data
|
||||||
val mappedResponses = responses.map { (account, param, getAccountDataResponse) ->
|
val mappedResponses = responses.map { (account, param, getAccountDataResponse) ->
|
||||||
val bank = getAccountDataResponse.customerAccount
|
val fintsBank = getAccountDataResponse.customerAccount
|
||||||
val finTsBankAccount = bank?.accounts?.firstOrNull { it.identifier == account.identifier && it.subAccountNumber == account.subAccountNumber }
|
val finTsBankAccount = fintsBank?.accounts?.firstOrNull { it.identifier == account.identifier && it.subAccountNumber == account.subAccountNumber }
|
||||||
|
|
||||||
val messageLog = mapMessageLog(getAccountDataResponse)
|
val messageLog = mapMessageLog(getAccountDataResponse, bank, account)
|
||||||
|
|
||||||
if (getAccountDataResponse.successful && bank != null && finTsBankAccount != null) {
|
if (getAccountDataResponse.successful && fintsBank != null && finTsBankAccount != null) {
|
||||||
if (finTsBankAccount.lastAccountUpdateTime != null) {
|
if (finTsBankAccount.lastAccountUpdateTime != null) {
|
||||||
account.lastAccountUpdateTime = finTsBankAccount.lastAccountUpdateTime
|
account.lastAccountUpdateTime = finTsBankAccount.lastAccountUpdateTime
|
||||||
}
|
}
|
||||||
|
@ -413,24 +413,33 @@ open class FinTs4kMapper {
|
||||||
open fun mapToMoney(amount: Amount, currency: String): Money = Money(amount.toString(), currency)
|
open fun mapToMoney(amount: Amount, currency: String): Money = Money(amount.toString(), currency)
|
||||||
|
|
||||||
|
|
||||||
open fun mapMessageLog(response: FinTsClientResponse, bank: BankAccess? = null, account: BankAccount? = null) =
|
open fun mapMessageLog(response: net.dankito.banking.client.model.response.FinTsClientResponse, bank: BankAccess? = null, account: BankAccount? = null) =
|
||||||
mapMessageLog(response.messageLog, bank)
|
mapMessageLog(response.messageLog, bank, account)
|
||||||
|
|
||||||
open fun mapMessageLog(messageLog: List<MessageLogEntry>, bank: BankAccess? = null, account: BankAccount? = null) =
|
open fun mapMessageLog(messageLog: List<net.codinux.banking.fints.model.MessageLogEntry>, bank: BankAccess? = null, account: BankAccount? = null) =
|
||||||
messageLog.map { mapMessageLogEntry(it) }
|
messageLog.map { mapMessageLogEntry(it, bank, account) }
|
||||||
|
|
||||||
open fun mapMessageLogEntry(messageLogEntry: MessageLogEntry, bank: BankAccess? = null, account: BankAccount? = null): net.codinux.banking.client.model.MessageLogEntry {
|
open fun mapMessageLogEntry(messageLogEntry: net.codinux.banking.fints.model.MessageLogEntry, bank: BankAccess? = null, account: BankAccount? = null): MessageLogEntry {
|
||||||
// TODO: may map messageLogEntry.context.BankData to BankAccess
|
// TODO: may map messageLogEntry.context.BankData to BankAccess
|
||||||
val fintsAccount = messageLogEntry.context.account
|
val context = messageLogEntry.context
|
||||||
|
val fintsAccount = context.account
|
||||||
val effectiveAccount = account ?: bank?.accounts?.firstOrNull { it.identifier == fintsAccount?.accountIdentifier && it.subAccountNumber == fintsAccount?.subAccountAttribute }
|
val effectiveAccount = account ?: bank?.accounts?.firstOrNull { it.identifier == fintsAccount?.accountIdentifier && it.subAccountNumber == fintsAccount?.subAccountAttribute }
|
||||||
|
|
||||||
return net.codinux.banking.client.model.MessageLogEntry(
|
val messageNumberString = "${context.jobNumber.toString().padStart(2, '0')}_${context.dialogNumber.toString().padStart(2, '0')}_${context.messageNumber.toString().padStart(2, '0')}"
|
||||||
|
|
||||||
|
return MessageLogEntry(
|
||||||
MessageLogEntryType.valueOf(messageLogEntry.type.name),
|
MessageLogEntryType.valueOf(messageLogEntry.type.name),
|
||||||
messageLogEntry.message, messageLogEntry.messageTrace,
|
messageLogEntry.message, messageLogEntry.messageWithoutSensitiveData,
|
||||||
messageLogEntry.error, messageLogEntry.time,
|
messageLogEntry.error, messageLogEntry.time,
|
||||||
|
|
||||||
bank = bank,
|
messageNumberString,
|
||||||
account = effectiveAccount
|
messageNumberString.replace("_", "").toIntOrNull(),
|
||||||
|
|
||||||
|
context.jobType.toString(),
|
||||||
|
context.messageType.toString(),
|
||||||
|
|
||||||
|
bank,
|
||||||
|
effectiveAccount
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue