feature/Transaction Request Reasons - WIP 3

This commit is contained in:
Marko Milić 2020-07-28 14:55:11 +02:00
parent 8ea7b76fa8
commit 83e8c4f097
6 changed files with 34 additions and 26 deletions

View File

@ -8,7 +8,7 @@
<groupId>com.tesobe</groupId>
<artifactId>obp-parent</artifactId>
<relativePath>../pom.xml</relativePath>
<version>1.6.2</version>
<version>1.6.3</version>
</parent>
<artifactId>obp-api</artifactId>
<packaging>war</packaging>

View File

@ -37,7 +37,7 @@ import code.metadata.tags.Tags
import code.model.dataAccess.{AuthUser, BankAccountCreation}
import code.model.{toUserExtended, _}
import code.transactionChallenge.MappedExpectedChallengeAnswer
import code.transactionrequests.{MappedTransactionRequestProvider, TransactionRequestReasons}
import code.transactionrequests.MappedTransactionRequestProvider
import code.transactionrequests.TransactionRequests.TransactionChallengeTypes._
import code.transactionrequests.TransactionRequests.TransactionRequestTypes
import code.transactionrequests.TransactionRequests.TransactionRequestTypes.{apply => _, _}
@ -671,20 +671,7 @@ trait APIMethods400 {
getScaMethodAtInstance(transactionRequestType.value).toOption,
transDetailsSEPAJson.reasons,
callContext)
} yield {
for (reason <- transDetailsSEPAJson.reasons.getOrElse(Nil)) {
TransactionRequestReasons
.create
.TransactionRequestId(createdTransactionRequest.id.value)
.Amount(reason.amount.getOrElse(""))
.Code(reason.code)
.Currency(reason.currency.getOrElse(""))
.DocumentNumber(reason.documentNumber.getOrElse(""))
.Description(reason.description.getOrElse(""))
.save()
}
(createdTransactionRequest, callContext)
}
} yield (createdTransactionRequest, callContext)
}
case FREE_FORM => {
for {

View File

@ -3654,13 +3654,15 @@ object LocalMappedConnector extends Connector with MdcLoggable {
charge = TransactionRequestCharge("Total charges for completed transaction", AmountOfMoney(transactionRequestCommonBody.value.currency, chargeValue))
// Always create a new Transaction Request
transactionRequest <- Future {
createTransactionRequestImpl210(TransactionRequestId(generateUUID()), transactionRequestType, fromAccount, toAccount, transactionRequestCommonBody, detailsPlain, status.toString, charge, chargePolicy)
val transactionRequest = createTransactionRequestImpl210(TransactionRequestId(generateUUID()), transactionRequestType, fromAccount, toAccount, transactionRequestCommonBody, detailsPlain, status.toString, charge, chargePolicy)
saveTransactionRequestReasons(reasons, transactionRequest)
transactionRequest
} map {
unboxFullOrFail(_, callContext, s"$InvalidConnectorResponseForCreateTransactionRequestImpl210")
}
// If no challenge necessary, create Transaction immediately and put in data store and object to return
(transactionRequest, callConext) <- status match {
(transactionRequest, callContext) <- status match {
case TransactionRequestStatus.COMPLETED =>
for {
(createdTransactionId, callContext) <- NewStyle.function.makePaymentv210(
@ -3745,6 +3747,20 @@ object LocalMappedConnector extends Connector with MdcLoggable {
}
}
private def saveTransactionRequestReasons(reasons: Option[List[TransactionRequestReason]], transactionRequest: Box[TransactionRequest]) = {
for (reason <- reasons.getOrElse(Nil)) {
TransactionRequestReasons
.create
.TransactionRequestId(transactionRequest.map(_.id.value).getOrElse(""))
.Amount(reason.amount.getOrElse(""))
.Code(reason.code)
.Currency(reason.currency.getOrElse(""))
.DocumentNumber(reason.documentNumber.getOrElse(""))
.Description(reason.description.getOrElse(""))
.save()
}
}
override def saveTransactionRequestTransaction(transactionRequestId: TransactionRequestId, transactionId: TransactionId) = {
//put connector agnostic logic here if necessary
saveTransactionRequestTransactionImpl(transactionRequestId, transactionId)

View File

@ -74,7 +74,7 @@ trait StoredProcedureConnector_vDec2019 extends Connector with MdcLoggable {
val connectorName = "stored_procedure_vDec2019"
//---------------- dynamic start -------------------please don't modify this line
// ---------- created on 2020-07-27T16:34:44Z
// ---------- created on 2020-07-28T13:44:41Z
messageDocs += getAdapterInfoDoc
def getAdapterInfoDoc = MessageDoc(
@ -1834,7 +1834,12 @@ trait StoredProcedureConnector_vDec2019 extends Connector with MdcLoggable {
detailsPlain="string",
chargePolicy="string",
challengeType=Some("string"),
scaMethod=Some(com.openbankproject.commons.model.enums.StrongCustomerAuthentication.SMS))
scaMethod=Some(com.openbankproject.commons.model.enums.StrongCustomerAuthentication.SMS),
reasons=Some(List( TransactionRequestReason(code="string",
documentNumber=Some("string"),
amount=Some(amountExample.value),
currency=Some(currencyExample.value),
description=Some("string")))))
),
exampleInboundMessage = (
InBoundCreateTransactionRequestv400(inboundAdapterCallContext=MessageDocsSwaggerDefinitions.inboundAdapterCallContext,
@ -1909,9 +1914,9 @@ trait StoredProcedureConnector_vDec2019 extends Connector with MdcLoggable {
adapterImplementation = Some(AdapterImplementation("- Core", 1))
)
override def createTransactionRequestv400(initiator: User, viewId: ViewId, fromAccount: BankAccount, toAccount: BankAccount, transactionRequestType: TransactionRequestType, transactionRequestCommonBody: TransactionRequestCommonBodyJSON, detailsPlain: String, chargePolicy: String, challengeType: Option[String], scaMethod: Option[StrongCustomerAuthentication.SCA], callContext: Option[CallContext]): OBPReturnType[Box[TransactionRequest]] = {
override def createTransactionRequestv400(initiator: User, viewId: ViewId, fromAccount: BankAccount, toAccount: BankAccount, transactionRequestType: TransactionRequestType, transactionRequestCommonBody: TransactionRequestCommonBodyJSON, detailsPlain: String, chargePolicy: String, challengeType: Option[String], scaMethod: Option[StrongCustomerAuthentication.SCA], reasons: Option[List[TransactionRequestReason]], callContext: Option[CallContext]): OBPReturnType[Box[TransactionRequest]] = {
import com.openbankproject.commons.dto.{OutBoundCreateTransactionRequestv400 => OutBound, InBoundCreateTransactionRequestv400 => InBound}
val req = OutBound(callContext.map(_.toOutboundAdapterCallContext).orNull, initiator, viewId, fromAccount, toAccount, transactionRequestType, transactionRequestCommonBody, detailsPlain, chargePolicy, challengeType, scaMethod)
val req = OutBound(callContext.map(_.toOutboundAdapterCallContext).orNull, initiator, viewId, fromAccount, toAccount, transactionRequestType, transactionRequestCommonBody, detailsPlain, chargePolicy, challengeType, scaMethod, reasons)
val response: Future[Box[InBound]] = sendRequest[InBound]("obp_create_transaction_requestv400", req, callContext)
response.map(convertToTuple[TransactionRequest](callContext))
}
@ -5736,8 +5741,8 @@ trait StoredProcedureConnector_vDec2019 extends Connector with MdcLoggable {
response.map(convertToTuple[Boolean](callContext))
}
// ---------- created on 2020-07-27T16:34:44Z
//---------------- dynamic end ---------------------please don't modify this line
// ---------- created on 2020-07-28T13:44:41Z
//---------------- dynamic end ---------------------please don't modify this line
private val availableOperation = DynamicEntityOperation.values.map(it => s""""$it"""").mkString("[", ", ", "]")

View File

@ -7,7 +7,7 @@
<groupId>com.tesobe</groupId>
<artifactId>obp-parent</artifactId>
<relativePath>../pom.xml</relativePath>
<version>1.6.2</version>
<version>1.6.3</version>
</parent>
<artifactId>obp-commons</artifactId>
<packaging>jar</packaging>

View File

@ -5,7 +5,7 @@
<modelVersion>4.0.0</modelVersion>
<groupId>com.tesobe</groupId>
<artifactId>obp-parent</artifactId>
<version>1.6.2</version>
<version>1.6.3</version>
<packaging>pom</packaging>
<name>Open Bank Project API Parent</name>
<inceptionYear>2011</inceptionYear>