BankingClient/fints4k/src/main/kotlin/net/dankito/fints/response/GetUserTanProceduresResponse.kt

24 lines
No EOL
1.1 KiB
Kotlin

package net.dankito.fints.response
open class GetUserTanProceduresResponse(bankResponse: Response)
: Response(bankResponse.didReceiveResponse, bankResponse.receivedResponse, bankResponse.receivedSegments,
bankResponse.exception, bankResponse.noTanProcedureSelected, bankResponse.messageCreationError) {
/**
* comdirect sends "9955::Unzulässiges TAN-Verfahren." even though '999' is a valid TAN procedure
* for init dialog if user's TAN procedures are not known yet
* -> check if the only error is '9955', then it's still a success.
*/
override val successful: Boolean
get() = noTanProcedureSelected == false && couldCreateMessage && didReceiveResponse
&& tanRequiredButUserDidNotEnterOne == false
&& (responseContainsErrors == false || containsOnlyInvalidTanProcedureError())
protected open fun containsOnlyInvalidTanProcedureError(): Boolean {
val errorFeedbacks = segmentFeedbacks.flatMap { it.feedbacks }.filter { it.isError }
return errorFeedbacks.size == 1 && errorFeedbacks.first().responseCode == 9955
}
}