From 377f3dd618bcde16c66cd5a51c5e31db19fa6a20 Mon Sep 17 00:00:00 2001 From: hongwei Date: Tue, 19 Nov 2024 15:07:42 +0100 Subject: [PATCH] feature/Added Agent Trait --- .../scala/code/api/util/ErrorMessages.scala | 4 + .../main/scala/code/api/util/NewStyle.scala | 44 +++++- .../scala/code/api/v5_1_0/APIMethods510.scala | 45 ++----- .../code/api/v5_1_0/JSONFactory5.1.0.scala | 41 +++--- .../scala/code/bankconnectors/Connector.scala | 23 +++- .../customer/MappedCustomerProvider.scala | 13 +- .../code/customer/agent/AgentProvider.scala | 55 ++++++++ .../customer/agent/MappedAgentProvider.scala | 127 ++++++++++++++++++ .../commons/model/CommonModel.scala | 10 ++ .../commons/model/CustomerDataModel.scala | 13 +- 10 files changed, 304 insertions(+), 71 deletions(-) create mode 100644 obp-api/src/main/scala/code/customer/agent/AgentProvider.scala create mode 100644 obp-api/src/main/scala/code/customer/agent/MappedAgentProvider.scala diff --git a/obp-api/src/main/scala/code/api/util/ErrorMessages.scala b/obp-api/src/main/scala/code/api/util/ErrorMessages.scala index 7006390be..41ca284f0 100644 --- a/obp-api/src/main/scala/code/api/util/ErrorMessages.scala +++ b/obp-api/src/main/scala/code/api/util/ErrorMessages.scala @@ -453,6 +453,8 @@ object ErrorMessages { val InvalidCardNumber = "OBP-30200: Card not found. Please specify a valid value for CARD_NUMBER. " val AgentNotFound = "OBP-30201: Agent not found. Please specify a valid value for AGENT_ID. " + val CreateAgentError = "OBP-30202: Could not create Agent." + val UpdateAgentError = "OBP-30203: Could not update Agent." val CustomerAccountLinkNotFound = "OBP-30204: Customer Account Link not found" @@ -525,6 +527,8 @@ object ErrorMessages { val GetChargeValueError = "OBP-30323: Could not get the Charge Value." val GetTransactionRequestTypeChargesError = "OBP-30324: Could not get Transaction Request Type Charges." val AgentAccountLinkNotFound = "OBP-30325: Agent Account Link not found." + val AgentsNotFound = "OBP-30326: Agents not found." + val CreateAgentAccountLinkError = "OBP-30327: Could not create the agent account link." // Branch related messages val BranchesNotFoundLicense = "OBP-32001: No branches available. License may not be set." diff --git a/obp-api/src/main/scala/code/api/util/NewStyle.scala b/obp-api/src/main/scala/code/api/util/NewStyle.scala index feb909f77..3ee618fec 100644 --- a/obp-api/src/main/scala/code/api/util/NewStyle.scala +++ b/obp-api/src/main/scala/code/api/util/NewStyle.scala @@ -749,11 +749,6 @@ object NewStyle extends MdcLoggable{ } } - def getAgentByAgentId(agentId : String, callContext: Option[CallContext]): OBPReturnType[Customer] = { - Connector.connector.vend.getCustomerByCustomerId(agentId, callContext) map { - unboxFullOrFail(_, callContext, s"$AgentNotFound. Current AGENT_ID($agentId)", 404) - } - } def checkCustomerNumberAvailable(bankId: BankId, customerNumber: String, callContext: Option[CallContext]): OBPReturnType[Boolean] = { Connector.connector.vend.checkCustomerNumberAvailable(bankId: BankId, customerNumber: String, callContext: Option[CallContext]) map { i => (unboxFullOrFail(i._1, callContext, s"$InvalidConnectorResponse", 400), i._2) @@ -2839,19 +2834,49 @@ object NewStyle extends MdcLoggable{ i => (unboxFullOrFail(i._1, callContext, UpdateCustomerError), i._2) } + def createAgent( + bankId: String, + legalName : String, + mobileNumber : String, + number : String, + callContext: Option[CallContext] + ): OBPReturnType[Agent] = + Connector.connector.vend.createAgent( + bankId: String, + legalName : String, + mobileNumber : String, + number : String, + callContext: Option[CallContext] + ) map { + i => (unboxFullOrFail(i._1, callContext, CreateAgentError), i._2) + } + + def getAgents(bankId : String, queryParams: List[OBPQueryParam], callContext: Option[CallContext]): OBPReturnType[List[Agent]] = { + Connector.connector.vend.getAgents(bankId : String, queryParams: List[OBPQueryParam], callContext: Option[CallContext]) map { + i => (unboxFullOrFail(i._1, callContext, s"$AgentsNotFound."), i._2) + } + } + + def getAgentByAgentId(agentId : String, callContext: Option[CallContext]): OBPReturnType[Agent] = { + Connector.connector.vend.getAgentByAgentId(agentId : String, callContext: Option[CallContext]) map { + i => (unboxFullOrFail(i._1, callContext, s"$AgentNotFound. Current AGENT_ID($agentId)"), i._2) + } + } + def updateAgentStatus( agentId: String, is_pending_agent: Boolean, is_confirmed_agent: Boolean, - callContext: Option[CallContext]): OBPReturnType[Customer] = + callContext: Option[CallContext]): OBPReturnType[Agent] = Connector.connector.vend.updateAgentStatus( agentId: String, is_pending_agent: Boolean, is_confirmed_agent: Boolean, callContext: Option[CallContext] ) map { - i => (unboxFullOrFail(i._1, callContext, UpdateCustomerError), i._2) + i => (unboxFullOrFail(i._1, callContext, UpdateAgentError), i._2) } + def updateCustomerCreditData(customerId: String, creditRating: Option[String], creditSource: Option[String], @@ -4103,6 +4128,11 @@ object NewStyle extends MdcLoggable{ i => (unboxFullOrFail(i._1, callContext, CreateCustomerAccountLinkError), i._2) } + def createAgentAccountLink(agentId: String, bankId: String, accountId: String, relationshipType: String, callContext: Option[CallContext]): OBPReturnType[CustomerAccountLinkTrait] = + Connector.connector.vend.createCustomerAccountLink(agentId: String, bankId, accountId: String, relationshipType: String, callContext: Option[CallContext]) map { + i => (unboxFullOrFail(i._1, callContext, CreateAgentAccountLinkError), i._2) + } + def getCustomerAccountLinksByCustomerId(customerId: String, callContext: Option[CallContext]): OBPReturnType[List[CustomerAccountLinkTrait]] = Connector.connector.vend.getCustomerAccountLinksByCustomerId(customerId: String, callContext: Option[CallContext]) map { i => (unboxFullOrFail(i._1, callContext, GetCustomerAccountLinksError), i._2) diff --git a/obp-api/src/main/scala/code/api/v5_1_0/APIMethods510.scala b/obp-api/src/main/scala/code/api/v5_1_0/APIMethods510.scala index eab0e6b8f..c37fde46e 100644 --- a/obp-api/src/main/scala/code/api/v5_1_0/APIMethods510.scala +++ b/obp-api/src/main/scala/code/api/v5_1_0/APIMethods510.scala @@ -353,11 +353,6 @@ trait APIMethods510 { "/banks/BANK_ID/agents", "Create Agent", s""" - |The Customer resource stores the customer number (which is set by the backend), legal name, email, phone number, their date of birth, relationship status, education attained, a url for a profile image, KYC status etc. - |Dates need to be in the format 2013-01-21T23:08:00Z - | - |Note: If you need to set a specific customer number, use the Update Customer Number endpoint after this call. - | |${authenticationRequiredMessage(true)} |""", postAgentJsonV510, @@ -383,26 +378,11 @@ trait APIMethods510 { json.extract[PostAgentJsonV510] } (_, callContext) <- NewStyle.function.checkCustomerNumberAvailable(bankId, postedData.agent_number, cc.callContext) - (customer, callContext) <- NewStyle.function.createCustomerC2( - bankId, - postedData.legal_name, - postedData.agent_number, - postedData.mobile_phone_number, - "", - CustomerFaceImage(null, ""), - null, - "", - 0, - Nil, - "", - "", - false, - null, - None, - None, - "", - "", - "", + (agent, callContext) <- NewStyle.function.createAgent( + bankId = bankId.value, + legalName = postedData.legal_name, + mobileNumber = postedData.mobile_phone_number, + number = postedData.agent_number, callContext, ) (bankAccount, callContext) <- NewStyle.function.createBankAccount( @@ -417,9 +397,9 @@ trait APIMethods510 { Nil, callContext ) - (_, callContext) <- NewStyle.function.createCustomerAccountLink(customer.customerId, bankAccount.bankId.value, bankAccount.accountId.value, "Owner", callContext) + (_, callContext) <- NewStyle.function.createCustomerAccountLink(agent.agentId, bankAccount.bankId.value, bankAccount.accountId.value, "Owner", callContext) } yield { - (JSONFactory510.createAgentJson(customer, bankAccount), HttpCode.`201`(callContext)) + (JSONFactory510.createAgentJson(agent, bankAccount), HttpCode.`201`(callContext)) } } } @@ -463,11 +443,10 @@ trait APIMethods510 { customerAccountLinks.head } (bankAccount, callContext) <- NewStyle.function.getBankAccount(BankId(customerAccountLink.bankId), AccountId(customerAccountLink.accountId), callContext) - (customer, callContext) <- NewStyle.function.updateCustomerScaData( + (agent, callContext) <- NewStyle.function.updateAgentStatus( agentId, - Some(postedData.is_pending_agent.toString), - None, - None, + postedData.is_pending_agent, + postedData.is_confirmed_agent, callContext) } yield { (JSONFactory510.createAgentJson(agent, bankAccount), HttpCode.`201`(callContext)) @@ -997,9 +976,9 @@ trait APIMethods510 { cc => implicit val ec = EndpointContext(Some(cc)) for { (requestParams, callContext) <- extractQueryParams(cc.url, List("limit","offset","sort_direction"), cc.callContext) - customers <- NewStyle.function.getCustomers(bankId, callContext, requestParams) + (agents, callContext) <- NewStyle.function.getAgents(bankId.value, requestParams, callContext) } yield { - (JSONFactory510.createAgentMinimalsJson(customers), HttpCode.`200`(callContext)) + (JSONFactory510.createAgentMinimalsJson(agents), HttpCode.`200`(callContext)) } } } diff --git a/obp-api/src/main/scala/code/api/v5_1_0/JSONFactory5.1.0.scala b/obp-api/src/main/scala/code/api/v5_1_0/JSONFactory5.1.0.scala index 823290b63..b8954659d 100644 --- a/obp-api/src/main/scala/code/api/v5_1_0/JSONFactory5.1.0.scala +++ b/obp-api/src/main/scala/code/api/v5_1_0/JSONFactory5.1.0.scala @@ -27,33 +27,30 @@ package code.api.v5_1_0 import code.api.Constant -import code.api.util.{APIUtil, ConsentJWT, CustomJsonFormats, JwtUtil, Role} import code.api.util.APIUtil.{DateWithDay, DateWithSeconds, gitCommit, stringOrNull} +import code.api.util._ import code.api.v1_2_1.BankRoutingJsonV121 import code.api.v1_4_0.JSONFactory1_4_0.{LocationJsonV140, MetaJsonV140, transformToLocationFromV140, transformToMetaFromV140} import code.api.v2_1_0.ResourceUserJSON import code.api.v3_0_0.JSONFactory300.{createLocationJson, createMetaJson, transformToAddressFromV300} -import code.api.v3_0_0.{AccountIdJson, AccountsIdsJsonV300, AddressJsonV300, OpeningTimesV300, ViewJsonV300} -import code.api.v4_0_0.{EnergySource400, HostedAt400, HostedBy400, PostViewJsonV400} +import code.api.v3_0_0.{AddressJsonV300, OpeningTimesV300} +import code.api.v4_0_0.{EnergySource400, HostedAt400, HostedBy400} import code.api.v5_0_0.PostConsentRequestJsonV500 import code.atmattribute.AtmAttribute import code.atms.Atms.Atm -import code.users.{UserAttribute, Users} -import code.views.system.{AccountAccess, ViewDefinition} -import com.openbankproject.commons.model.{AccountRoutingJsonV121, Address, AmountOfMoneyJsonV121, AtmId, AtmT, BankAccount, BankId, BankIdAccountId, BranchRoutingJsonV141, CreateViewJson, Customer, Location, Meta, RegulatedEntityTrait, TransactionRequestCommonBodyJSON, UpdateViewJSON, View} -import com.openbankproject.commons.util.{ApiVersion, ScannedApiVersion} - -import java.util.Date import code.consent.MappedConsent import code.metrics.APIMetric import code.model.Consumer -import com.openbankproject.commons.model.enums.ConsentType +import code.users.{UserAttribute, Users} +import code.views.system.{AccountAccess, ViewDefinition} +import com.openbankproject.commons.model._ +import com.openbankproject.commons.util.ApiVersion import net.liftweb.common.{Box, Full} import net.liftweb.json import net.liftweb.json.{JString, JValue, parse, parseOpt} import java.text.SimpleDateFormat -import scala.collection.immutable.List +import java.util.Date import scala.util.Try @@ -945,22 +942,22 @@ object JSONFactory510 extends CustomJsonFormats { ConsumersJsonV510(consumers.map(createConsumerJSON(_,None))) } - def createAgentJson(customer: Customer, bankAccount: BankAccount): AgentJsonV510 = { + def createAgentJson(agent: Agent, bankAccount: BankAccount): AgentJsonV510 = { AgentJsonV510( - agent_id = customer.customerId, - legal_name = customer.legalName, - mobile_phone_number = customer.mobileNumber, - agent_number = customer.number, + agent_id = agent.agentId, + legal_name = agent.legalName, + mobile_phone_number = agent.mobileNumber, + agent_number = agent.number, currency = bankAccount.currency ) } - def createAgentMinimalsJson(customers: List[Customer]): AgentMinimalsJsonV510 = { + def createAgentMinimalsJson(agents: List[Agent]): AgentMinimalsJsonV510 = { AgentMinimalsJsonV510( - customers - .filter(_.isConfirmedAgent == Some(true)) - .map(customer => AgentMinimalJsonV510( - agent_id = customer.customerId, - legal_name = customer.legalName + agents + .filter(_.isConfirmedAgent == true) + .map(agent => AgentMinimalJsonV510( + agent_id = agent.agentId, + legal_name = agent.legalName ))) } diff --git a/obp-api/src/main/scala/code/bankconnectors/Connector.scala b/obp-api/src/main/scala/code/bankconnectors/Connector.scala index 647454e43..3926f3514 100644 --- a/obp-api/src/main/scala/code/bankconnectors/Connector.scala +++ b/obp-api/src/main/scala/code/bankconnectors/Connector.scala @@ -1113,12 +1113,33 @@ trait Connector extends MdcLoggable { callContext: Option[CallContext]): OBPReturnType[Box[Customer]] = Future{(Failure(setUnimplementedError(nameOf(updateCustomerScaData _))), callContext)} + def getAgentByAgentId( + agentId : String, + callContext: Option[CallContext] + ): OBPReturnType[Box[Agent]] = Future{(Failure(setUnimplementedError(nameOf(getAgentByAgentId _))), callContext)} + + + def getAgents( + bankId : String, + queryParams: List[OBPQueryParam], + callContext: Option[CallContext] + ): OBPReturnType[Box[List[Agent]]] = Future{(Failure(setUnimplementedError(nameOf(getAgents _))), callContext)} + + def updateAgentStatus( agentId: String, is_pending_agent: Boolean, is_confirmed_agent: Boolean, callContext: Option[CallContext] - ): OBPReturnType[Box[Customer]] = Future{(Failure(setUnimplementedError(nameOf(updateCustomerScaData _))), callContext)} + ): OBPReturnType[Box[Agent]] = Future{(Failure(setUnimplementedError(nameOf(updateAgentStatus _))), callContext)} + + def createAgent( + bankId: String, + legalName : String, + mobileNumber : String, + number : String, + callContext: Option[CallContext] + ): OBPReturnType[Box[Agent]] = Future{(Failure(setUnimplementedError(nameOf(createAgent _))), callContext)} def updateCustomerCreditData(customerId: String, creditRating: Option[String], diff --git a/obp-api/src/main/scala/code/customer/MappedCustomerProvider.scala b/obp-api/src/main/scala/code/customer/MappedCustomerProvider.scala index 1d290fbb9..5ce838796 100644 --- a/obp-api/src/main/scala/code/customer/MappedCustomerProvider.scala +++ b/obp-api/src/main/scala/code/customer/MappedCustomerProvider.scala @@ -32,7 +32,7 @@ object MappedCustomerProvider extends CustomerProvider with MdcLoggable { Full(MappedCustomer.findAll(mapperParams:_*)) } - private def getOptionalParams(queryParams: List[OBPQueryParam]) = { + def getOptionalParams(queryParams: List[OBPQueryParam]) = { val limit = queryParams.collect { case OBPLimit(value) => MaxRows[MappedCustomer](value) }.headOption val offset = queryParams.collect { case OBPOffset(value) => StartAt[MappedCustomer](value) }.headOption val fromDate = queryParams.collect { case OBPFromDate(date) => By_>=(MappedCustomer.updatedAt, date) }.headOption @@ -333,7 +333,7 @@ object MappedCustomerProvider extends CustomerProvider with MdcLoggable { } -class MappedCustomer extends Customer with LongKeyedMapper[MappedCustomer] with IdPK with CreatedUpdated { +class MappedCustomer extends Customer with Agent with LongKeyedMapper[MappedCustomer] with IdPK with CreatedUpdated { def getSingleton = MappedCustomer @@ -402,9 +402,12 @@ class MappedCustomer extends Customer with LongKeyedMapper[MappedCustomer] with override def title: String = mTitle.get override def branchId: String = mBranchId.get override def nameSuffix: String = mNameSuffix.get - - override def isConfirmedAgent = Some(mIsConfirmedAgent.get) - override def isPendingAgent = Some(mIsPendingAgent.get) + + override def isConfirmedAgent: Boolean = mIsConfirmedAgent.get //This is for Agent + + override def isPendingAgent: Boolean = mIsPendingAgent.get //This is for Agent + + override def agentId: String = mCustomerId.get //this is for Agent } object MappedCustomer extends MappedCustomer with LongKeyedMetaMapper[MappedCustomer] { diff --git a/obp-api/src/main/scala/code/customer/agent/AgentProvider.scala b/obp-api/src/main/scala/code/customer/agent/AgentProvider.scala new file mode 100644 index 000000000..8bfb02ae8 --- /dev/null +++ b/obp-api/src/main/scala/code/customer/agent/AgentProvider.scala @@ -0,0 +1,55 @@ +package code.customer.agent + +import code.api.util.{CallContext, OBPQueryParam} +import com.openbankproject.commons.model._ +import net.liftweb.common.Box +import net.liftweb.util.SimpleInjector + +import scala.concurrent.Future + + +object AgentX extends SimpleInjector { + + val agentProvider = new Inject(buildOne _) {} + + def buildOne: AgentProvider = MappedAgentProvider + +} + +trait AgentProvider { + def getAgentsAtAllBanks(queryParams: List[OBPQueryParam]): Future[Box[List[Agent]]] + + def getAgentsFuture(bankId: BankId, queryParams: List[OBPQueryParam]): Future[Box[List[Agent]]] + + def getAgentsByAgentPhoneNumber(bankId: BankId, phoneNumber: String): Future[Box[List[Agent]]] + + def getAgentsByAgentLegalName(bankId: BankId, legalName: String): Future[Box[List[Agent]]] + + def getAgentByAgentId(agentId: String): Box[Agent] + + def getAgentByAgentIdFuture(agentId: String): Future[Box[Agent]] + + def getBankIdByAgentId(agentId: String): Box[String] + + def getAgentByAgentNumber(agentNumber: String, bankId: BankId): Box[Agent] + + def getAgentByAgentNumberFuture(agentNumber: String, bankId: BankId): Future[Box[Agent]] + + def checkAgentNumberAvailable(bankId: BankId, agentNumber: String): Boolean + + def createAgent( + bankId: String, + legalName : String, + mobileNumber : String, + number : String, + callContext: Option[CallContext] + ): Future[Box[Agent]] + + def updateAgentStatus( + agentId: String, + isPendingAgent: Boolean, + isConfirmedAgent: Boolean, + callContext: Option[CallContext] + ): Future[Box[Agent]] + +} \ No newline at end of file diff --git a/obp-api/src/main/scala/code/customer/agent/MappedAgentProvider.scala b/obp-api/src/main/scala/code/customer/agent/MappedAgentProvider.scala new file mode 100644 index 000000000..bded8cb9d --- /dev/null +++ b/obp-api/src/main/scala/code/customer/agent/MappedAgentProvider.scala @@ -0,0 +1,127 @@ +package code.customer.agent + +import code.api.util._ +import code.customer.{MappedCustomer, MappedCustomerProvider} +import code.util.Helper.MdcLoggable +import com.openbankproject.commons.ExecutionContext.Implicits.global +import com.openbankproject.commons.model._ +import net.liftweb.common.{Box, Full} +import net.liftweb.mapper._ +import net.liftweb.util.Helpers.tryo + +import scala.concurrent.Future + + +object MappedAgentProvider extends AgentProvider with MdcLoggable { + + override def getAgentsAtAllBanks(queryParams: List[OBPQueryParam]): Future[Box[List[Agent]]] = Future { + val mapperParams = MappedCustomerProvider.getOptionalParams(queryParams) + Full(MappedCustomer.findAll(mapperParams: _*)) + } + + override def getAgentsFuture(bankId: BankId, queryParams: List[OBPQueryParam]): Future[Box[List[Agent]]] = Future { + val mapperParams = Seq(By(MappedCustomer.mBank, bankId.value)) ++ MappedCustomerProvider.getOptionalParams(queryParams) + Full(MappedCustomer.findAll(mapperParams: _*)) + } + + + override def getAgentsByAgentPhoneNumber(bankId: BankId, phoneNumber: String): Future[Box[List[Agent]]] = Future { + val result = MappedCustomer.findAll( + By(MappedCustomer.mBank, bankId.value), + Like(MappedCustomer.mMobileNumber, phoneNumber) + ) + Full(result) + } + + override def getAgentsByAgentLegalName(bankId: BankId, legalName: String): Future[Box[List[Agent]]] = Future { + val result = MappedCustomer.findAll( + By(MappedCustomer.mBank, bankId.value), + Like(MappedCustomer.mLegalName, legalName) + ) + Full(result) + } + + + override def checkAgentNumberAvailable(bankId: BankId, customerNumber: String): Boolean = { + val customers = MappedCustomer.findAll( + By(MappedCustomer.mBank, bankId.value), + By(MappedCustomer.mNumber, customerNumber) + ) + + val available: Boolean = customers.size match { + case 0 => true + case _ => false + } + + available + } + + override def getAgentByAgentId(customerId: String): Box[Agent] = { + MappedCustomer.find( + By(MappedCustomer.mCustomerId, customerId) + ) + } + + override def getBankIdByAgentId(customerId: String): Box[String] = { + val customer: Box[MappedCustomer] = MappedCustomer.find( + By(MappedCustomer.mCustomerId, customerId) + ) + for (c <- customer) yield { + c.mBank.get + } + } + + override def getAgentByAgentNumber(customerNumber: String, bankId: BankId): Box[Agent] = { + MappedCustomer.find( + By(MappedCustomer.mNumber, customerNumber), + By(MappedCustomer.mBank, bankId.value) + ) + } + + override def getAgentByAgentNumberFuture(customerNumber: String, bankId: BankId): Future[Box[Agent]] = { + Future(getAgentByAgentNumber(customerNumber, bankId)) + } + + + override def createAgent( + bankId: String, + legalName: String, + mobileNumber: String, + number: String, + callContext: Option[CallContext] + ): Future[Box[Agent]] = Future { + tryo { + MappedCustomer + .create + .mBank(bankId) + .mLegalName(legalName) + .mMobileNumber(mobileNumber) + .mNumber(number) + .mIsPendingAgent(true) //default value + .mIsConfirmedAgent(false) // default value + .saveMe() + + } + + } + + override def updateAgentStatus( + agentId: String, + isPendingAgent: Boolean, + isConfirmedAgent: Boolean, + callContext: Option[CallContext] + ): Future[Box[Agent]] = Future { + MappedCustomer.find( + By(MappedCustomer.mCustomerId, agentId) + ) map { + c => + c.mIsPendingAgent(isPendingAgent) + c.mIsConfirmedAgent(isConfirmedAgent) + c.saveMe() + } + } + + override def getAgentByAgentIdFuture(agentId: String): Future[Box[Agent]] = Future { + getAgentByAgentId(agentId: String) + } +} \ No newline at end of file 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 f1d9b0384..14d785f23 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 @@ -170,6 +170,16 @@ case class CustomerCommons( object CustomerCommons extends Converter[Customer, CustomerCommons] +case class AgentCommons( + agentId: String, + bankId: String, + number: String, + legalName: String, + mobileNumber: String, + isConfirmedAgent: Boolean, + isPendingAgent: Boolean, +) extends Agent +object AgentCommons extends Converter[Agent, AgentCommons] case class CustomerAddressCommons( customerId :String, diff --git a/obp-commons/src/main/scala/com/openbankproject/commons/model/CustomerDataModel.scala b/obp-commons/src/main/scala/com/openbankproject/commons/model/CustomerDataModel.scala index c6757c651..524d2993a 100644 --- a/obp-commons/src/main/scala/com/openbankproject/commons/model/CustomerDataModel.scala +++ b/obp-commons/src/main/scala/com/openbankproject/commons/model/CustomerDataModel.scala @@ -53,9 +53,16 @@ trait Customer { def title: String def branchId: String def nameSuffix: String - - def isConfirmedAgent: Option[Boolean] = None //this is for agent - def isPendingAgent: Option[Boolean]= None // this is for agent +} + +trait Agent { + def agentId : String + def bankId : String + def number : String + def legalName : String + def mobileNumber : String + def isConfirmedAgent: Boolean + def isPendingAgent: Boolean } trait CustomerFaceImageTrait {