From 5539f614ee971abef105f707357c94aa34280c84 Mon Sep 17 00:00:00 2001 From: hongwei Date: Thu, 12 Dec 2024 10:33:43 +0100 Subject: [PATCH] feature/added the attributes to createTransactionRequest(counterparty) --- .../SwaggerDefinitionsJSON.scala | 17 +++++++++-------- .../code/api/v2_1_0/JSONFactory2.1.0.scala | 3 ++- .../code/api/v4_0_0/JSONFactory4.0.0.scala | 6 ------ .../bankconnectors/LocalMappedConnector.scala | 3 ++- .../TransactionRequestAttribute.scala | 4 ++++ .../api/v4_0_0/TransactionRequestsTest.scala | 2 +- .../code/api/v5_1_0/CounterpartyLimitTest.scala | 9 ++++++--- .../code/api/v5_1_0/VRPConsentRequestTest.scala | 12 ++++++++---- .../commons/model/CommonModel.scala | 17 +++++++++++++---- .../commons/model/CommonModelTrait.scala | 1 + 10 files changed, 46 insertions(+), 28 deletions(-) diff --git a/obp-api/src/main/scala/code/api/ResourceDocs1_4_0/SwaggerDefinitionsJSON.scala b/obp-api/src/main/scala/code/api/ResourceDocs1_4_0/SwaggerDefinitionsJSON.scala index 73d5b8b73..29a6159df 100644 --- a/obp-api/src/main/scala/code/api/ResourceDocs1_4_0/SwaggerDefinitionsJSON.scala +++ b/obp-api/src/main/scala/code/api/ResourceDocs1_4_0/SwaggerDefinitionsJSON.scala @@ -2293,12 +2293,19 @@ object SwaggerDefinitionsJSON { transaction_request_types = List(transactionRequestTypeJSONV210) ) + val transactionRequestAttributeJsonV400 = TransactionRequestAttributeJsonV400( + name = transactionRequestAttributeNameExample.value, + `type` = transactionRequestAttributeTypeExample.value, + value = transactionRequestAttributeValueExample.value + ) + val transactionRequestBodyCounterpartyJSON = TransactionRequestBodyCounterpartyJSON( counterpartyIdJson, amountOfMoneyJsonV121, - "A description for the transaction to the counterparty", + description = "A description for the transaction to the counterparty", chargePolicyExample.value, - Some(futureDateExample.value) + Some(futureDateExample.value), + Some(List(transactionRequestAttributeJsonV400)) ) val transactionRequestBodySEPAJSON = TransactionRequestBodySEPAJSON( @@ -4752,12 +4759,6 @@ object SwaggerDefinitionsJSON { `type` = transactionRequestAttributeTypeExample.value, value = transactionRequestAttributeValueExample.value ) - - val transactionRequestAttributeJsonV400 = TransactionRequestAttributeJsonV400( - name = transactionRequestAttributeNameExample.value, - `type` = transactionRequestAttributeTypeExample.value, - value = transactionRequestAttributeValueExample.value - ) val transactionRequestAttributesResponseJson = TransactionRequestAttributesResponseJson( transaction_request_attributes = List(transactionRequestAttributeResponseJson) diff --git a/obp-api/src/main/scala/code/api/v2_1_0/JSONFactory2.1.0.scala b/obp-api/src/main/scala/code/api/v2_1_0/JSONFactory2.1.0.scala index 7d08b7c45..b31c322da 100644 --- a/obp-api/src/main/scala/code/api/v2_1_0/JSONFactory2.1.0.scala +++ b/obp-api/src/main/scala/code/api/v2_1_0/JSONFactory2.1.0.scala @@ -87,7 +87,8 @@ case class TransactionRequestBodyCounterpartyJSON( value: AmountOfMoneyJsonV121, description: String, charge_policy: String, - future_date: Option[String] = None + future_date: Option[String] = None, + attributes: Option[List[TransactionRequestAttributeJsonV400]]= None, ) extends TransactionRequestCommonBodyJSON // the data from endpoint, extract as valid JSON diff --git a/obp-api/src/main/scala/code/api/v4_0_0/JSONFactory4.0.0.scala b/obp-api/src/main/scala/code/api/v4_0_0/JSONFactory4.0.0.scala index 1038489db..be261c6c2 100644 --- a/obp-api/src/main/scala/code/api/v4_0_0/JSONFactory4.0.0.scala +++ b/obp-api/src/main/scala/code/api/v4_0_0/JSONFactory4.0.0.scala @@ -549,12 +549,6 @@ case class TransactionAttributesResponseJson( transaction_attributes: List[TransactionAttributeResponseJson] ) -case class TransactionRequestAttributeJsonV400( - name: String, - `type`: String, - value: String, -) - case class TransactionRequestAttributeResponseJson( transaction_request_attribute_id: String, name: String, diff --git a/obp-api/src/main/scala/code/bankconnectors/LocalMappedConnector.scala b/obp-api/src/main/scala/code/bankconnectors/LocalMappedConnector.scala index 793ca63ca..842920ac0 100644 --- a/obp-api/src/main/scala/code/bankconnectors/LocalMappedConnector.scala +++ b/obp-api/src/main/scala/code/bankconnectors/LocalMappedConnector.scala @@ -4778,7 +4778,8 @@ object LocalMappedConnector extends Connector with MdcLoggable { value = AmountOfMoneyJsonV121(body.value.currency, body.value.amount), description = body.description, charge_policy = transactionRequest.charge_policy, - future_date = transactionRequest.future_date) + future_date = transactionRequest.future_date, + None)//this TransactionRequestAttributeJsonV400 is only in OBP side (transactionId, callContext) <- NewStyle.function.makePaymentv210( fromAccount, diff --git a/obp-api/src/main/scala/code/transactionRequestAttribute/TransactionRequestAttribute.scala b/obp-api/src/main/scala/code/transactionRequestAttribute/TransactionRequestAttribute.scala index 99c55d000..dc5739329 100644 --- a/obp-api/src/main/scala/code/transactionRequestAttribute/TransactionRequestAttribute.scala +++ b/obp-api/src/main/scala/code/transactionRequestAttribute/TransactionRequestAttribute.scala @@ -22,6 +22,8 @@ class TransactionRequestAttribute extends TransactionRequestAttributeTrait with override def attributeType: TransactionRequestAttributeType.Value = TransactionRequestAttributeType.withName(Type.get) override def value: String = `Value`.get + + override def isPersonal: Boolean = IsPersonal.get object BankId extends UUIDString(this) // combination of this @@ -34,6 +36,8 @@ class TransactionRequestAttribute extends TransactionRequestAttributeTrait with object Type extends MappedString(this, 50) object `Value` extends MappedString(this, 255) + + object IsPersonal extends MappedBoolean(this) } diff --git a/obp-api/src/test/scala/code/api/v4_0_0/TransactionRequestsTest.scala b/obp-api/src/test/scala/code/api/v4_0_0/TransactionRequestsTest.scala index 1da1d41d8..2988f76c8 100644 --- a/obp-api/src/test/scala/code/api/v4_0_0/TransactionRequestsTest.scala +++ b/obp-api/src/test/scala/code/api/v4_0_0/TransactionRequestsTest.scala @@ -152,7 +152,7 @@ class TransactionRequestsTest extends V400ServerSetup with DefaultUsers { var transactionRequestBodySEPA = TransactionRequestBodySEPAJSON(bodyValue, IbanJson(counterpartySEPA.otherAccountSecondaryRoutingAddress), description, sharedChargePolicy) var transactionRequestBodyAgentCashWithdrawal = TransactionRequestBodyAgentJsonV400(AgentCashWithdrawalJson(agentCashWithdrawalAgent.bank_id,agentCashWithdrawalAgent.agent_number), bodyValue, description, sharedChargePolicy) - var transactionRequestBodyCounterparty = TransactionRequestBodyCounterpartyJSON(CounterpartyIdJson(counterpartyCounterparty.counterpartyId), bodyValue, description, sharedChargePolicy) + var transactionRequestBodyCounterparty = TransactionRequestBodyCounterpartyJSON(CounterpartyIdJson(counterpartyCounterparty.counterpartyId), bodyValue, description,sharedChargePolicy) var transactionRequestBodySimple = TransactionRequestBodySimpleJsonV400(SwaggerDefinitionsJSON.postSimpleCounterpartyJson400.copy( other_account_routing_address = counterpartyCounterparty.otherAccountRoutingAddress, other_bank_routing_address= counterpartyCounterparty.otherBankRoutingAddress, diff --git a/obp-api/src/test/scala/code/api/v5_1_0/CounterpartyLimitTest.scala b/obp-api/src/test/scala/code/api/v5_1_0/CounterpartyLimitTest.scala index 35e1b2346..6033c5d51 100644 --- a/obp-api/src/test/scala/code/api/v5_1_0/CounterpartyLimitTest.scala +++ b/obp-api/src/test/scala/code/api/v5_1_0/CounterpartyLimitTest.scala @@ -242,7 +242,8 @@ class CounterpartyLimitTest extends V510ServerSetup { value = AmountOfMoneyJsonV121("EUR","11"), description ="testing the limit", charge_policy = "SHARED", - future_date = None + future_date = None, + None, ) val response = makePostRequest(createTransReqRequest, write(transactionRequestBodyCounterparty)) @@ -303,7 +304,8 @@ class CounterpartyLimitTest extends V510ServerSetup { value = AmountOfMoneyJsonV121("EUR","11"), description ="testing the limit", charge_policy = "SHARED", - future_date = None + future_date = None, + None, ) val response1 = makePostRequest( @@ -356,7 +358,8 @@ class CounterpartyLimitTest extends V510ServerSetup { value = AmountOfMoneyJsonV121("EUR","11"), description ="testing the limit", charge_policy = "SHARED", - future_date = None + future_date = None, + None, ) //("we try the max_monthly_amount limit (11 euros) . now we transfer 9 euro first. then 9 euros, we will get the error") diff --git a/obp-api/src/test/scala/code/api/v5_1_0/VRPConsentRequestTest.scala b/obp-api/src/test/scala/code/api/v5_1_0/VRPConsentRequestTest.scala index 480c27f68..d3b221007 100644 --- a/obp-api/src/test/scala/code/api/v5_1_0/VRPConsentRequestTest.scala +++ b/obp-api/src/test/scala/code/api/v5_1_0/VRPConsentRequestTest.scala @@ -224,7 +224,8 @@ class VRPConsentRequestTest extends V510ServerSetup with PropsReset{ value = AmountOfMoneyJsonV121("EUR","1"), description ="testing the limit", charge_policy = "SHARED", - future_date =None + future_date = None, + None, ) val response = makePostRequest(createTransReqRequest, write(transactionRequestBodyCounterparty), (s"Consent-JWT", consentJwt)) response.code shouldBe(201) @@ -334,7 +335,8 @@ class VRPConsentRequestTest extends V510ServerSetup with PropsReset{ value = AmountOfMoneyJsonV121("EUR","11"), description ="testing the limit", charge_policy = "SHARED", - future_date =None + future_date = None, + None, ) setPropsValues("consumer_validation_method_for_consent"->"NONE") val response = makePostRequest(createTransReqRequest, write(transactionRequestBodyCounterparty), (s"Consent-JWT", consentJwt)) @@ -428,7 +430,8 @@ class VRPConsentRequestTest extends V510ServerSetup with PropsReset{ value = AmountOfMoneyJsonV121("EUR","11"), description ="testing the limit", charge_policy = "SHARED", - future_date =None + future_date = None, + None, ) setPropsValues("consumer_validation_method_for_consent"->"NONE") val response1 = makePostRequest( @@ -515,7 +518,8 @@ class VRPConsentRequestTest extends V510ServerSetup with PropsReset{ value = AmountOfMoneyJsonV121("EUR","11"), description ="testing the limit", charge_policy = "SHARED", - future_date =None + future_date = None, + None ) setPropsValues("consumer_validation_method_for_consent"->"NONE") //("we try the max_monthly_amount limit (11 euros) . now we transfer 9 euro first. then 9 euros, we will get the error") diff --git a/obp-commons/src/main/scala/com/openbankproject/commons/model/CommonModel.scala b/obp-commons/src/main/scala/com/openbankproject/commons/model/CommonModel.scala index 64dc83cb0..9fbed8f5e 100644 --- a/obp-commons/src/main/scala/com/openbankproject/commons/model/CommonModel.scala +++ b/obp-commons/src/main/scala/com/openbankproject/commons/model/CommonModel.scala @@ -381,8 +381,9 @@ case class ProductCommons(bankId: BankId, object ProductCommons extends Converter[Product, ProductCommons] case class TransactionRequestCommonBodyJSONCommons( - value : AmountOfMoneyJsonV121, - description: String) extends TransactionRequestCommonBodyJSON + value: AmountOfMoneyJsonV121, + description: String, +) extends TransactionRequestCommonBodyJSON object TransactionRequestCommonBodyJSONCommons extends Converter[TransactionRequestCommonBodyJSON, TransactionRequestCommonBodyJSONCommons] @@ -699,7 +700,9 @@ case class TransactionRequestAttributeTraitCommons( transactionRequestAttributeId: String, attributeType: TransactionRequestAttributeType, name: String, - value: String) extends TransactionRequestAttributeTrait + value: String, + isPersonal: Boolean +) extends TransactionRequestAttributeTrait object TransactionRequestAttributeTraitCommons extends Converter[TransactionRequestAttributeTrait, TransactionRequestAttributeTraitCommons] @@ -814,7 +817,7 @@ case class TransactionRequestAccount ( account_id : String ) -//For SEPA, it need the iban to find the toCounterpaty--> toBankAccount +//For SEPA, it needs the iban to find the toCounterpaty--> toBankAccount case class TransactionRequestIban (iban : String) case class AmountOfMoneyJsonV121( @@ -832,6 +835,12 @@ case class FromAccountTransfer( nickname: String ) +case class TransactionRequestAttributeJsonV400( + name: String, + `type`: String, + value: String, +) + case class ToAccountTransferToAtmKycDocument( `type`: String, number: String diff --git a/obp-commons/src/main/scala/com/openbankproject/commons/model/CommonModelTrait.scala b/obp-commons/src/main/scala/com/openbankproject/commons/model/CommonModelTrait.scala index 1c81d8beb..195a8c7ab 100644 --- a/obp-commons/src/main/scala/com/openbankproject/commons/model/CommonModelTrait.scala +++ b/obp-commons/src/main/scala/com/openbankproject/commons/model/CommonModelTrait.scala @@ -595,6 +595,7 @@ trait TransactionRequestAttributeTrait { def attributeType: TransactionRequestAttributeType.Value def name: String def value: String + def isPersonal: Boolean } trait DirectDebitTrait {