mirror of
https://github.com/OpenBankProject/OBP-API.git
synced 2026-02-06 13:46:49 +00:00
refactor/changed the AGENT_CASH_WITHDRAWAL request json
This commit is contained in:
parent
82e5ea6a84
commit
f8aff92622
@ -5516,7 +5516,10 @@ object SwaggerDefinitionsJSON {
|
||||
List(consumerJsonV510)
|
||||
)
|
||||
|
||||
val agentIdJson = AgentIdJson(agentIdExample.value)
|
||||
val agentIdJson = AgentCashWithdrawalJson(
|
||||
bankIdExample.value,
|
||||
agentNumberExample.value
|
||||
)
|
||||
|
||||
val transactionRequestBodyAgentJsonV400 = TransactionRequestBodyAgentJsonV400(
|
||||
to = agentIdJson,
|
||||
@ -5540,6 +5543,7 @@ object SwaggerDefinitionsJSON {
|
||||
|
||||
val agentJsonV510 = AgentJsonV510(
|
||||
agent_id = agentIdExample.value,
|
||||
bank_id = bankIdExample.value,
|
||||
legal_name = legalNameExample.value,
|
||||
mobile_phone_number = mobilePhoneNumberExample.value,
|
||||
agent_number = agentNumberExample.value,
|
||||
|
||||
@ -2868,6 +2868,12 @@ object NewStyle extends MdcLoggable{
|
||||
i => (unboxFullOrFail(i._1, callContext, s"$AgentNotFound. Current AGENT_ID($agentId)"), i._2)
|
||||
}
|
||||
}
|
||||
|
||||
def getAgentByAgentNumber(bankId: BankId, agentNumber : String, callContext: Option[CallContext]): OBPReturnType[Agent] = {
|
||||
Connector.connector.vend.getAgentByAgentNumber(bankId: BankId, agentNumber : String, callContext: Option[CallContext]) map {
|
||||
i => (unboxFullOrFail(i._1, callContext, s"$AgentNotFound. Current BANK_ID(${bankId.value}) and AGENT_NUMBER($agentNumber)"), i._2)
|
||||
}
|
||||
}
|
||||
|
||||
def updateAgentStatus(
|
||||
agentId: String,
|
||||
|
||||
@ -12631,9 +12631,8 @@ object APIMethods400 extends RestHelper with APIMethods400 {
|
||||
transactionRequestBodyAgent <- NewStyle.function.tryons(s"${InvalidJsonFormat}, it should be $AGENT_CASH_WITHDRAWAL json format", 400, callContext) {
|
||||
json.extract[TransactionRequestBodyAgentJsonV400]
|
||||
}
|
||||
toAgentId = transactionRequestBodyAgent.to.agent_id
|
||||
(agent, callContext) <- NewStyle.function.getAgentByAgentId(toAgentId, callContext)
|
||||
(customerAccountLinks, callContext) <- NewStyle.function.getCustomerAccountLinksByCustomerId(toAgentId, callContext)
|
||||
(agent, callContext) <- NewStyle.function.getAgentByAgentNumber(BankId(transactionRequestBodyAgent.to.bank_id),transactionRequestBodyAgent.to.agent_number, callContext)
|
||||
(customerAccountLinks, callContext) <- NewStyle.function.getCustomerAccountLinksByCustomerId(agent.agentId, callContext)
|
||||
customerAccountLink <- NewStyle.function.tryons(AgentAccountLinkNotFound, 400, callContext) {
|
||||
customerAccountLinks.head
|
||||
}
|
||||
|
||||
@ -391,12 +391,13 @@ case class ConsentInfoJsonV400(consent_id: String,
|
||||
api_version: String)
|
||||
case class ConsentInfosJsonV400(consents: List[ConsentInfoJsonV400])
|
||||
|
||||
case class AgentIdJson(
|
||||
agent_id: String
|
||||
case class AgentCashWithdrawalJson(
|
||||
bank_id: String,
|
||||
agent_number: String
|
||||
)
|
||||
|
||||
case class TransactionRequestBodyAgentJsonV400(
|
||||
to: AgentIdJson,
|
||||
to: AgentCashWithdrawalJson,
|
||||
value: AmountOfMoneyJsonV121,
|
||||
description: String,
|
||||
charge_policy: String,
|
||||
|
||||
@ -333,6 +333,7 @@ case class PutAgentJsonV510(
|
||||
|
||||
case class AgentJsonV510(
|
||||
agent_id: String,
|
||||
bank_id: String,
|
||||
legal_name: String,
|
||||
mobile_phone_number: String,
|
||||
agent_number: String,
|
||||
@ -948,6 +949,7 @@ object JSONFactory510 extends CustomJsonFormats {
|
||||
def createAgentJson(agent: Agent, bankAccount: BankAccount): AgentJsonV510 = {
|
||||
AgentJsonV510(
|
||||
agent_id = agent.agentId,
|
||||
bank_id = agent.bankId,
|
||||
legal_name = agent.legalName,
|
||||
mobile_phone_number = agent.mobileNumber,
|
||||
agent_number = agent.number,
|
||||
|
||||
@ -1124,6 +1124,13 @@ trait Connector extends MdcLoggable {
|
||||
callContext: Option[CallContext]
|
||||
): OBPReturnType[Box[Agent]] = Future{(Failure(setUnimplementedError(nameOf(getAgentByAgentId _))), callContext)}
|
||||
|
||||
|
||||
def getAgentByAgentNumber(
|
||||
bankId: BankId,
|
||||
agentNumber: String,
|
||||
callContext: Option[CallContext]
|
||||
): OBPReturnType[Box[Agent]] = Future{(Failure(setUnimplementedError(nameOf(getAgentByAgentNumber _))), callContext)}
|
||||
|
||||
|
||||
def getAgents(
|
||||
bankId : String,
|
||||
|
||||
@ -10,12 +10,12 @@ import code.api.Constant._
|
||||
import code.api.ResourceDocs1_4_0.SwaggerDefinitionsJSON
|
||||
import code.api.attributedefinition.{AttributeDefinition, AttributeDefinitionDI}
|
||||
import code.api.cache.Caching
|
||||
import code.api.util.APIUtil.{OBPReturnType, _}
|
||||
import code.api.util.APIUtil._
|
||||
import code.api.util.ErrorMessages._
|
||||
import code.api.util._
|
||||
import code.api.v1_4_0.JSONFactory1_4_0.TransactionRequestAccountJsonV140
|
||||
import code.api.v2_1_0._
|
||||
import code.api.v4_0_0.{AgentIdJson, PostSimpleCounterpartyJson400, TransactionRequestBodyAgentJsonV400, TransactionRequestBodySimpleJsonV400}
|
||||
import code.api.v4_0_0.{AgentCashWithdrawalJson, PostSimpleCounterpartyJson400, TransactionRequestBodyAgentJsonV400, TransactionRequestBodySimpleJsonV400}
|
||||
import code.atmattribute.{AtmAttribute, AtmAttributeX}
|
||||
import code.atms.{Atms, MappedAtm}
|
||||
import code.bankattribute.{BankAttribute, BankAttributeX}
|
||||
@ -1664,6 +1664,16 @@ object LocalMappedConnector extends Connector with MdcLoggable {
|
||||
).map((_, callContext))
|
||||
}
|
||||
|
||||
override def getAgentByAgentNumber(
|
||||
bankId : BankId,
|
||||
agentNumber : String,
|
||||
callContext: Option[CallContext]
|
||||
): OBPReturnType[Box[Agent]] = {
|
||||
AgentX.agentProvider.vend.getAgentByAgentNumberFuture(
|
||||
bankId, agentNumber: String
|
||||
).map((_, callContext))
|
||||
}
|
||||
|
||||
override def getAgents(
|
||||
bankId : String,
|
||||
queryParams: List[OBPQueryParam],
|
||||
@ -4746,17 +4756,15 @@ object LocalMappedConnector extends Connector with MdcLoggable {
|
||||
bodyToAgent <- NewStyle.function.tryons(s"$TransactionRequestDetailsExtractException It can not extract to $TransactionRequestBodyAgentJsonV400", 400, callContext) {
|
||||
body.to_agent.get
|
||||
}
|
||||
|
||||
toAgentId = bodyToAgent.agent_id
|
||||
(agent, callContext) <- NewStyle.function.getAgentByAgentId(toAgentId, callContext)
|
||||
(customerAccountLinks, callContext) <- NewStyle.function.getCustomerAccountLinksByCustomerId(toAgentId, callContext)
|
||||
(agent, callContext) <- NewStyle.function.getAgentByAgentNumber(BankId(bodyToAgent.bank_id), bodyToAgent.agent_number, callContext)
|
||||
(customerAccountLinks, callContext) <- NewStyle.function.getCustomerAccountLinksByCustomerId(agent.agentId, callContext)
|
||||
customerAccountLink <- NewStyle.function.tryons(AgentAccountLinkNotFound, 400, callContext) {
|
||||
customerAccountLinks.head
|
||||
}
|
||||
(toAccount, callContext) <- NewStyle.function.getBankAccount(BankId(customerAccountLink.bankId), AccountId(customerAccountLink.accountId), callContext)
|
||||
|
||||
agentRequestJsonBody = TransactionRequestBodyAgentJsonV400(
|
||||
to = AgentIdJson(toAgentId),
|
||||
to = AgentCashWithdrawalJson(bodyToAgent.bank_id, bodyToAgent.agent_number),
|
||||
value = AmountOfMoneyJsonV121(body.value.currency, body.value.amount),
|
||||
description = body.description,
|
||||
charge_policy = transactionRequest.charge_policy,
|
||||
|
||||
@ -31,9 +31,9 @@ trait AgentProvider {
|
||||
|
||||
def getBankIdByAgentId(agentId: String): Box[String]
|
||||
|
||||
def getAgentByAgentNumber(agentNumber: String, bankId: BankId): Box[Agent]
|
||||
def getAgentByAgentNumber(bankId: BankId, agentNumber: String): Box[Agent]
|
||||
|
||||
def getAgentByAgentNumberFuture(agentNumber: String, bankId: BankId): Future[Box[Agent]]
|
||||
def getAgentByAgentNumberFuture(bankId: BankId, agentNumber: String): Future[Box[Agent]]
|
||||
|
||||
def checkAgentNumberAvailable(bankId: BankId, agentNumber: String): Boolean
|
||||
|
||||
|
||||
@ -56,30 +56,30 @@ object MappedAgentProvider extends AgentProvider with MdcLoggable {
|
||||
available
|
||||
}
|
||||
|
||||
override def getAgentByAgentId(customerId: String): Box[Agent] = {
|
||||
override def getAgentByAgentId(agentId: String): Box[Agent] = {
|
||||
MappedCustomer.find(
|
||||
By(MappedCustomer.mCustomerId, customerId)
|
||||
By(MappedCustomer.mCustomerId, agentId)
|
||||
)
|
||||
}
|
||||
|
||||
override def getBankIdByAgentId(customerId: String): Box[String] = {
|
||||
override def getBankIdByAgentId(agentId: String): Box[String] = {
|
||||
val customer: Box[MappedCustomer] = MappedCustomer.find(
|
||||
By(MappedCustomer.mCustomerId, customerId)
|
||||
By(MappedCustomer.mCustomerId, agentId)
|
||||
)
|
||||
for (c <- customer) yield {
|
||||
c.mBank.get
|
||||
}
|
||||
}
|
||||
|
||||
override def getAgentByAgentNumber(customerNumber: String, bankId: BankId): Box[Agent] = {
|
||||
override def getAgentByAgentNumber(bankId: BankId, agentNumber: String): Box[Agent] = {
|
||||
MappedCustomer.find(
|
||||
By(MappedCustomer.mNumber, customerNumber),
|
||||
By(MappedCustomer.mNumber, agentNumber),
|
||||
By(MappedCustomer.mBank, bankId.value)
|
||||
)
|
||||
}
|
||||
|
||||
override def getAgentByAgentNumberFuture(customerNumber: String, bankId: BankId): Future[Box[Agent]] = {
|
||||
Future(getAgentByAgentNumber(customerNumber, bankId))
|
||||
override def getAgentByAgentNumberFuture(bankId: BankId, agentNumber: String): Future[Box[Agent]] = {
|
||||
Future(getAgentByAgentNumber(bankId: BankId, agentNumber: String))
|
||||
}
|
||||
|
||||
|
||||
|
||||
@ -368,13 +368,22 @@ class MappedTransactionRequest extends LongKeyedMapper[MappedTransactionRequest]
|
||||
None
|
||||
|
||||
val t_to_agent = if (TransactionRequestTypes.withName(transactionType) == TransactionRequestTypes.AGENT_CASH_WITHDRAWAL && details.nonEmpty) {
|
||||
val agentIdList: List[String] = for {
|
||||
val agentNumberList: List[String] = for {
|
||||
JObject(child) <- parsedDetails
|
||||
JField("agent_id", JString(agentId)) <- child
|
||||
JField("agent_number", JString(agentNumber)) <- child
|
||||
} yield
|
||||
agentId
|
||||
val agentIdValue = if (agentIdList.isEmpty) "" else agentIdList.head
|
||||
Some(TransactionRequestAgentId(agent_id = agentIdValue))
|
||||
agentNumber
|
||||
val bankIdList: List[String] = for {
|
||||
JObject(child) <- parsedDetails
|
||||
JField("bank_id", JString(agentNumber)) <- child
|
||||
} yield
|
||||
agentNumber
|
||||
val agentNumberValue = if (agentNumberList.isEmpty) "" else agentNumberList.head
|
||||
val bankIdValue = if (bankIdList.isEmpty) "" else bankIdList.head
|
||||
Some(transactionRequestAgentCashWithdrawal(
|
||||
bank_id = bankIdValue,
|
||||
agent_number = agentNumberValue
|
||||
))
|
||||
}
|
||||
else
|
||||
None
|
||||
|
||||
@ -137,7 +137,7 @@ class TransactionRequestsTest extends V400ServerSetup with DefaultUsers {
|
||||
|
||||
var transactionRequestBodySEPA = TransactionRequestBodySEPAJSON(bodyValue, IbanJson(counterpartySEPA.otherAccountSecondaryRoutingAddress), description, sharedChargePolicy)
|
||||
|
||||
var transactionRequestBodyAgentCashWithdrawal = TransactionRequestBodyAgentJsonV400(AgentIdJson(agentCashWithdrawalAgent.agent_id), bodyValue, 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 transactionRequestBodySimple = TransactionRequestBodySimpleJsonV400(SwaggerDefinitionsJSON.postSimpleCounterpartyJson400.copy(
|
||||
other_account_routing_address = counterpartyCounterparty.otherAccountRoutingAddress,
|
||||
|
||||
@ -859,8 +859,8 @@ case class TransactionRequestTransferToAtm(
|
||||
//For COUNTERPARTY, it needs the counterparty_id to find the toCounterparty--> toBankAccount
|
||||
case class TransactionRequestCounterpartyId (counterparty_id : String)
|
||||
|
||||
//For AGENT_CASH_WITHDRAWAL, it needs the agent_id to find the toAgent--> toBankAccount
|
||||
case class TransactionRequestAgentId (agent_id : String)
|
||||
//For AGENT_CASH_WITHDRAWAL, it needs the agent_number to find the toAgent--> toBankAccount
|
||||
case class transactionRequestAgentCashWithdrawal (bank_id: String , agent_number : String)
|
||||
|
||||
case class TransactionRequestSimple (
|
||||
otherBankRoutingScheme: String,
|
||||
@ -974,7 +974,7 @@ case class TransactionRequestBodyAllTypes (
|
||||
@optional
|
||||
to_sepa_credit_transfers: Option[SepaCreditTransfers]= None,//TODO not stable, from berlin Group
|
||||
@optional
|
||||
to_agent: Option[TransactionRequestAgentId]= None,
|
||||
to_agent: Option[transactionRequestAgentCashWithdrawal]= None,
|
||||
|
||||
value: AmountOfMoney,
|
||||
description: String
|
||||
|
||||
Loading…
Reference in New Issue
Block a user