mirror of
https://github.com/OpenBankProject/OBP-API.git
synced 2026-02-06 17:37:00 +00:00
added Customer in getBankAccounts in Connector, and remove payloads and AvroSchemas files.
This commit is contained in:
parent
0cbddb02d8
commit
dd892b5a6e
@ -29,7 +29,7 @@ package code.api
|
||||
import authentikat.jwt.{JsonWebToken, JwtClaimsSet, JwtHeader}
|
||||
import code.api.util.APIUtil.setGatewayResponseHeader
|
||||
import code.api.util.ErrorMessages
|
||||
import code.bankconnectors.{Connector, InboundAccountJune2017}
|
||||
import code.bankconnectors.Connector
|
||||
import code.consumer.Consumers
|
||||
import code.model.dataAccess.AuthUser
|
||||
import code.model.{Consumer, User}
|
||||
|
||||
@ -6,7 +6,7 @@ import code.api.v1_4_0.{APIMethods140, JSONFactory1_4_0, OBPAPI1_4_0}
|
||||
import code.api.v2_2_0.{APIMethods220, OBPAPI2_2_0}
|
||||
import code.api.v3_0_0.{APIMethods300, OBPAPI3_0_0}
|
||||
import code.api.v3_0_0.OBPAPI3_0_0._
|
||||
import code.bankconnectors.{KafkaJSONFactory_vMar2017, KafkaMappedConnector_vMar2017}
|
||||
import code.bankconnectors.KafkaMappedConnector_vMar2017
|
||||
import net.liftweb.common.{Box, Empty, Full}
|
||||
import code.util.Helper.MdcLoggable
|
||||
import net.liftweb.http.rest.RestHelper
|
||||
|
||||
@ -8,6 +8,7 @@ import code.branches.Branches.{Branch, BranchId, DriveUp, Lobby}
|
||||
import code.common._
|
||||
import net.liftweb.common.Full
|
||||
import code.api.v3_0_0.JSONFactory300.createBranchJsonV300
|
||||
import code.branches.{MessageDocJson, MessageDocsJson}
|
||||
|
||||
import scala.util.Try
|
||||
|
||||
|
||||
@ -9,13 +9,12 @@ import code.api.util.APIUtil.{isValidCurrencyISOCode, _}
|
||||
import code.api.util.ApiRole._
|
||||
import code.api.util.{ApiRole, ErrorMessages}
|
||||
import code.api.util.ErrorMessages.{BankAccountNotFound, _}
|
||||
|
||||
import code.api.v2_2_0.JSONFactory220.transformV220ToBranch
|
||||
|
||||
import code.api.v2_1_0._
|
||||
import code.api.v2_2_0._
|
||||
import code.api.v2_1_0.JSONFactory210.createConsumerJSONs
|
||||
import code.bankconnectors._
|
||||
import code.branches.KafkaJSONFactory_vMar2017
|
||||
import code.consumer.Consumers
|
||||
import code.metrics.{ConnectorMetric, ConnectorMetricsProvider}
|
||||
import code.model.dataAccess.BankAccountCreation
|
||||
|
||||
@ -11,8 +11,8 @@ import code.api.v2_0_0.JSONFactory200
|
||||
import code.api.v3_0_0.JSONFactory300._
|
||||
import code.atms.Atms
|
||||
import code.atms.Atms.AtmId
|
||||
import code.bankconnectors.{Connector, InboundAdapterInfo}
|
||||
import code.branches.Branches
|
||||
import code.bankconnectors.Connector
|
||||
import code.branches.{Branches, InboundAdapterInfo}
|
||||
import code.branches.Branches.BranchId
|
||||
import code.entitlement.Entitlement
|
||||
import code.model.dataAccess.AuthUser
|
||||
|
||||
@ -1,22 +0,0 @@
|
||||
package code.bankconnectors
|
||||
|
||||
import com.sksamuel.avro4s.SchemaFor
|
||||
|
||||
/**
|
||||
* Defines avro schemas for case classes used in communication via kafka.
|
||||
*
|
||||
* Example:
|
||||
* implicit val schemaForMyCaseClass = SchemaFor[MyCaseClass]
|
||||
*
|
||||
*/
|
||||
object AvroSchemas {
|
||||
implicit val schemaForGetBanks = SchemaFor[GetBanks]
|
||||
implicit val schemaForGetBank = SchemaFor[GetBank]
|
||||
implicit val schemaForGetAdapterInfo = SchemaFor[GetAdapterInfo]
|
||||
|
||||
|
||||
implicit val schemaForBanks = SchemaFor[Banks]
|
||||
implicit val schemaForBank = SchemaFor[BankWrapper]
|
||||
implicit val schemaForAdapterInfo = SchemaFor[AdapterInfo]
|
||||
|
||||
}
|
||||
@ -9,8 +9,9 @@ import code.api.util.ErrorMessages
|
||||
import code.api.v2_1_0._
|
||||
import code.atms.Atms
|
||||
import code.atms.Atms.{Atm, AtmId, AtmT}
|
||||
import code.bankconnectors.vJune.InboundAccountJune2017
|
||||
import code.branches.Branches.{Branch, BranchId, BranchT}
|
||||
import code.branches.MappedBranch
|
||||
import code.branches.{InboundAdapterInfo, MappedBranch}
|
||||
import code.fx.FXRate
|
||||
import code.management.ImporterAPI.ImporterTransaction
|
||||
import code.metadata.counterparties.{CounterpartyTrait, MappedCounterparty}
|
||||
|
||||
@ -1,60 +0,0 @@
|
||||
package code.bankconnectors
|
||||
|
||||
import code.api.util.APIUtil.InboundMessageBase
|
||||
import code.model.{AccountId, BankAccount, BankId}
|
||||
import code.model.dataAccess.MappedBankAccountData
|
||||
import java.text.SimpleDateFormat
|
||||
import java.util.{Date, Locale}
|
||||
import net.liftweb.mapper.By
|
||||
import net.liftweb.util.Helpers.today
|
||||
|
||||
|
||||
|
||||
case class InboundAccountJune2017(
|
||||
errorCode: String,
|
||||
cbsToken: String,
|
||||
bankId: String,
|
||||
branchId: String,
|
||||
accountId: String,
|
||||
accountNumber: String,
|
||||
accountType: String,
|
||||
balanceAmount: String,
|
||||
balanceCurrency: String,
|
||||
owners: List[String],
|
||||
viewsToGenerate: List[String],
|
||||
bankRoutingScheme: String,
|
||||
bankRoutingAddress: String,
|
||||
branchRoutingScheme: String,
|
||||
branchRoutingAddress: String,
|
||||
accountRoutingScheme: String,
|
||||
accountRoutingAddress: String
|
||||
) extends InboundMessageBase with InboundAccountCommon
|
||||
|
||||
case class BankAccountJune2017(r: InboundAccountJune2017) extends BankAccount {
|
||||
|
||||
def accountId: AccountId = AccountId(r.accountId)
|
||||
def accountType: String = r.accountType
|
||||
def balance: BigDecimal = BigDecimal(r.balanceAmount)
|
||||
def currency: String = r.balanceCurrency
|
||||
def name: String = r.owners.head
|
||||
// Note: swift_bic--> swiftBic, but it extends from BankAccount
|
||||
def swift_bic: Option[String] = Some("swift_bic")
|
||||
// Note: deprecated, extends from BankAccount
|
||||
def iban: Option[String] = Some("iban")
|
||||
def number: String = r.accountNumber
|
||||
def bankId: BankId = BankId(r.bankId)
|
||||
def lastUpdate: Date = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'", Locale.ENGLISH).parse(today.getTime.toString)
|
||||
def accountHolder: String = r.owners.head
|
||||
|
||||
// Fields modifiable from OBP are stored in mapper
|
||||
def label: String = (for {
|
||||
d <- MappedBankAccountData.find(By(MappedBankAccountData.accountId, r.accountId))
|
||||
} yield {
|
||||
d.getLabel
|
||||
}).getOrElse(r.accountNumber)
|
||||
|
||||
def accountRoutingScheme: String = r.accountRoutingScheme
|
||||
def accountRoutingAddress: String = r.accountRoutingAddress
|
||||
def branchId: String = r.branchId
|
||||
|
||||
}
|
||||
@ -31,8 +31,8 @@ import code.api.util.ErrorMessages
|
||||
import code.api.v2_1_0.{BranchJsonPostV210, TransactionRequestCommonBodyJSON}
|
||||
import code.atms.Atms.AtmId
|
||||
import code.atms.MappedAtm
|
||||
import code.branches.Branches.{BranchT, Branch, BranchId}
|
||||
import code.branches.MappedBranch
|
||||
import code.branches.Branches.{Branch, BranchId, BranchT}
|
||||
import code.branches.{InboundAdapterInfo, MappedBranch}
|
||||
import code.fx.{FXRate, fx}
|
||||
import code.management.ImporterAPI.ImporterTransaction
|
||||
import code.metadata.comments.Comments
|
||||
|
||||
@ -37,7 +37,7 @@ import code.api.v2_1_0.{AtmJsonPost, BranchJsonPostV210, TransactionRequestCommo
|
||||
import code.atms.Atms.{Atm, AtmId, AtmT}
|
||||
import code.atms.{Atms, MappedAtm}
|
||||
import code.branches.Branches.{Branch, BranchId, BranchT}
|
||||
import code.branches.MappedBranch
|
||||
import code.branches.{InboundAdapterInfo, MappedBranch}
|
||||
import code.fx.{FXRate, fx}
|
||||
import code.management.ImporterAPI.ImporterTransaction
|
||||
import code.metadata.comments.Comments
|
||||
|
||||
@ -27,13 +27,15 @@ import java.text.SimpleDateFormat
|
||||
import java.util.{Date, Locale, UUID}
|
||||
|
||||
import code.accountholder.AccountHolders
|
||||
import code.api.util.APIUtil.{MessageDoc, saveConnectorMetric}
|
||||
import code.api.util.ErrorMessages
|
||||
import code.api.util.APIUtil.{MessageDoc, exampleDate, saveConnectorMetric}
|
||||
import code.api.util.{APIUtil, ErrorMessages}
|
||||
import code.api.v1_4_0.JSONFactory1_4_0
|
||||
import code.api.v2_1_0._
|
||||
import code.atms.Atms.AtmId
|
||||
import code.atms.MappedAtm
|
||||
import code.branches.Branches.{Branch, BranchId}
|
||||
import code.branches.MappedBranch
|
||||
import code.branches._
|
||||
import code.customer.Customer
|
||||
import code.fx.{FXRate, fx}
|
||||
import code.management.ImporterAPI.ImporterTransaction
|
||||
import code.metadata.comments.Comments
|
||||
@ -48,6 +50,7 @@ import code.products.Products.{Product, ProductCode}
|
||||
import code.transaction.MappedTransaction
|
||||
import code.transactionrequests.TransactionRequests._
|
||||
import code.transactionrequests.{TransactionRequestTypeCharge, TransactionRequests}
|
||||
import code.usercustomerlinks.UserCustomerLink
|
||||
import code.util.{Helper, TTLCache}
|
||||
import code.views.Views
|
||||
import net.liftweb.common._
|
||||
@ -67,6 +70,8 @@ import com.google.common.cache.CacheBuilder
|
||||
import code.util.Helper.MdcLoggable
|
||||
import net.liftweb.json.JsonAST.JValue
|
||||
import net.liftweb.json.Extraction._
|
||||
import code.api.ResourceDocs1_4_0.SwaggerDefinitionsJSON._
|
||||
import code.bankconnectors.vJune._
|
||||
|
||||
|
||||
object KafkaMappedConnector_vJune2017 extends Connector with KafkaHelper with MdcLoggable {
|
||||
@ -124,7 +129,7 @@ object KafkaMappedConnector_vJune2017 extends Connector with KafkaHelper with Md
|
||||
)
|
||||
)
|
||||
override def getAdapterInfo: Box[InboundAdapterInfo] = {
|
||||
val req = code.bankconnectors.GetAdapterInfo((new Date()).toString)
|
||||
val req = GetAdapterInfo((new Date()).toString)
|
||||
val rr = process[GetAdapterInfo](req)
|
||||
val r = rr.extract[AdapterInfo].data
|
||||
Full(r)
|
||||
@ -234,7 +239,27 @@ object KafkaMappedConnector_vJune2017 extends Connector with KafkaHelper with Md
|
||||
messageFormat = messageFormat,
|
||||
description = "getBankAccounts from kafka",
|
||||
exampleOutboundMessage = decompose(
|
||||
GetAccounts(AuthInfo("userId", "username","cbsToken"))
|
||||
OutboundGetAccounts(
|
||||
AuthInfo("userId", "username","cbsToken"),
|
||||
InternalCustomers(customers =List(InternalCustomer(
|
||||
customer_id = "123",
|
||||
customer_number = "123",
|
||||
legal_name = "legal_name",
|
||||
mobile_phone_number = "123",
|
||||
email = "contact@tesobe.com",
|
||||
face_image = customerFaceImageJson,
|
||||
date_of_birth = exampleDate,
|
||||
relationship_status = "123",
|
||||
dependants = 123,
|
||||
dob_of_dependants = List(exampleDate),
|
||||
credit_rating = Option(customerCreditRatingJSON),
|
||||
credit_limit = Option(amountOfMoneyJsonV121),
|
||||
highest_education_attained = "123",
|
||||
employment_status = "123",
|
||||
kyc_status = true,
|
||||
last_ok_date = exampleDate
|
||||
)))
|
||||
)
|
||||
),
|
||||
exampleInboundMessage = decompose(
|
||||
InboundBankAccounts(
|
||||
@ -262,13 +287,16 @@ object KafkaMappedConnector_vJune2017 extends Connector with KafkaHelper with Md
|
||||
)
|
||||
override def getBankAccounts(username: String): Box[List[InboundAccountJune2017]] = saveConnectorMetric {
|
||||
memoizeSync(getAccountsTTL millisecond) {
|
||||
val req = GetAccounts(AuthInfo(currentResourceUserId, username,"cbsToken"))
|
||||
|
||||
logger.debug(s"Kafka getBankAccounts says: req is: $req")
|
||||
val rList = process[GetAccounts](req).extract[InboundBankAccounts].data
|
||||
val res = rList //map (new BankAccountJune2017(_))
|
||||
logger.debug(s"Kafka getBankAccounts says res is $res")
|
||||
Full(res)
|
||||
val customerIds: List[String]= UserCustomerLink.userCustomerLink.vend.getUserCustomerLinkByUserId(currentResourceUserId).map(_.customerId)
|
||||
val customerList :List[Customer]= APIUtil.getCustomers(customerIds)
|
||||
val internalCustomers = JsonFactory_vJune2017.createCustomersJson(customerList)
|
||||
|
||||
val req = OutboundGetAccounts(AuthInfo(currentResourceUserId, username,"cbsToken"),internalCustomers)
|
||||
logger.debug(s"Kafka getBankAccounts says: req is: $req")
|
||||
val rList = process[OutboundGetAccounts](req).extract[InboundBankAccounts].data
|
||||
val res = rList //map (new BankAccountJune2017(_))
|
||||
logger.debug(s"Kafka getBankAccounts says res is $res")
|
||||
Full(res)
|
||||
}}("getBankAccounts")
|
||||
|
||||
|
||||
|
||||
@ -33,8 +33,8 @@ import code.api.util.ErrorMessages
|
||||
import code.api.v2_1_0._
|
||||
import code.atms.Atms.AtmId
|
||||
import code.atms.MappedAtm
|
||||
import code.branches.Branches.{BranchT, Branch, BranchId}
|
||||
import code.branches.MappedBranch
|
||||
import code.branches.Branches.{Branch, BranchId, BranchT}
|
||||
import code.branches._
|
||||
import code.fx.{FXRate, fx}
|
||||
import code.management.ImporterAPI.ImporterTransaction
|
||||
import code.metadata.comments.Comments
|
||||
|
||||
@ -6,8 +6,8 @@ import java.util.{Date, TimeZone, UUID}
|
||||
import code.api.v2_1_0.{BranchJsonPostV210, TransactionRequestCommonBodyJSON}
|
||||
import code.atms.Atms.AtmId
|
||||
import code.atms.MappedAtm
|
||||
import code.branches.Branches.{BranchT, Branch, BranchId}
|
||||
import code.branches.MappedBranch
|
||||
import code.branches.Branches.{Branch, BranchId, BranchT}
|
||||
import code.branches.{InboundAdapterInfo, MappedBranch}
|
||||
import code.fx.{FXRate, fx}
|
||||
import code.management.ImporterAPI.ImporterTransaction
|
||||
import code.metadata.counterparties.{Counterparties, CounterpartyTrait, Metadata, MongoCounterparties}
|
||||
|
||||
@ -8,7 +8,7 @@ import code.api.v2_1_0.{AtmJsonPost, BranchJsonPostV210, TransactionRequestCommo
|
||||
import code.atms.Atms.{AtmId, AtmT}
|
||||
import code.atms.{Atms, MappedAtm, MappedAtmsProvider}
|
||||
import code.branches.Branches._
|
||||
import code.branches.MappedBranch
|
||||
import code.branches.{InboundAdapterInfo, MappedBranch}
|
||||
import code.common.{Address, _}
|
||||
import code.fx.{FXRate, MappedFXRate, fx}
|
||||
import code.management.ImporterAPI.ImporterTransaction
|
||||
|
||||
@ -11,8 +11,8 @@ import code.api.util.ErrorMessages
|
||||
import code.api.v2_1_0.{BranchJsonPostV210, TransactionRequestCommonBodyJSON}
|
||||
import code.atms.Atms.AtmId
|
||||
import code.atms.MappedAtm
|
||||
import code.branches.Branches.{BranchT, Branch, BranchId}
|
||||
import code.branches.MappedBranch
|
||||
import code.branches.Branches.{Branch, BranchId, BranchT}
|
||||
import code.branches.{InboundAdapterInfo, MappedBranch}
|
||||
import code.fx.{FXRate, fx}
|
||||
import code.management.ImporterAPI.ImporterTransaction
|
||||
import code.metadata.comments.Comments
|
||||
|
||||
@ -9,6 +9,7 @@ import akka.pattern.pipe
|
||||
import akka.stream.ActorMaterializer
|
||||
import akka.stream.scaladsl.{Sink, Source}
|
||||
import code.actorsystem.{ObpActorHelper, ObpActorInit}
|
||||
import code.bankconnectors.Topics.TopicTrait
|
||||
import code.util.Helper.MdcLoggable
|
||||
import net.liftweb.json
|
||||
import net.liftweb.json.{DefaultFormats, Extraction, JsonAST}
|
||||
@ -152,8 +153,8 @@ class KafkaStreamsHelperActor extends Actor with ObpActorInit with ObpActorHelpe
|
||||
any
|
||||
}
|
||||
|
||||
// This is for KafkaMappedConnector_vJune2017, the request is TopicCaseClass
|
||||
case request: TopicCaseClass =>
|
||||
// This is for KafkaMappedConnector_vJune2017, the request is TopicTrait
|
||||
case request: TopicTrait =>
|
||||
logger.debug("kafka_request[TopicCaseClass]: " + request)
|
||||
val f = for {
|
||||
t <- Future(Topics.createTopicByClassName(request.getClass.getSimpleName))
|
||||
@ -230,5 +231,33 @@ object Topics {
|
||||
TopicPair(s"obp.${connectorVersion}.N." + className.replace("$", ""),
|
||||
s"obp.${connectorVersion}.S." + className.replace("$", ""))
|
||||
}
|
||||
|
||||
|
||||
// @see 'case request: TopicTrait' in code/bankconnectors/kafkaStreamsHelper.scala
|
||||
// This is for Kafka topics for both North and South sides.
|
||||
// In OBP-API, these topics will be created automatically.
|
||||
sealed trait TopicTrait
|
||||
|
||||
// There design for OutBound Topics : North --> South
|
||||
trait GetAdapterInfoTopic extends TopicTrait
|
||||
trait GetBanksTopic extends TopicTrait
|
||||
trait GetBankTopic extends TopicTrait
|
||||
trait GetUserByUsernamePasswordTopic extends TopicTrait
|
||||
trait GetAccountsTopic extends TopicTrait
|
||||
trait GetAccountbyAccountIDTopic extends TopicTrait
|
||||
trait GetAccountbyAccountNumberTopic extends TopicTrait
|
||||
trait GetTransactionsTopic extends TopicTrait
|
||||
trait GetTransactionTopic extends TopicTrait
|
||||
trait CreateCBSAuthTokenTopic extends TopicTrait
|
||||
|
||||
|
||||
//There design for InBound Topics : South --> North
|
||||
trait AdapterInfoTopic extends TopicTrait
|
||||
trait UserWrapperTopic extends TopicTrait
|
||||
trait BanksTopic extends TopicTrait
|
||||
trait BankWrapperTopic extends TopicTrait
|
||||
trait InboundBankAccountsTopic extends TopicTrait
|
||||
trait InboundBankAccountTopic extends TopicTrait
|
||||
trait InboundTransactionsTopic extends TopicTrait
|
||||
trait InboundTransactionTopic extends TopicTrait
|
||||
|
||||
}
|
||||
|
||||
@ -1,35 +0,0 @@
|
||||
package code.bankconnectors
|
||||
|
||||
import java.util.Date
|
||||
|
||||
/**
|
||||
* Created by slavisa on 6/5/17.
|
||||
*/
|
||||
case class AuthInfo(userId: String, username: String, cbsToken: String)
|
||||
|
||||
/**
|
||||
* case classes used to define topics
|
||||
*/
|
||||
sealed trait TopicCaseClass
|
||||
//This is special, it is only internal, will not call any JONI call,so no AuthInfo inside
|
||||
case class GetAdapterInfo(date: String) extends TopicCaseClass
|
||||
case class GetBanks(authInfo: AuthInfo, criteria: String) extends TopicCaseClass
|
||||
case class GetBank(authInfo: AuthInfo, bankId: String) extends TopicCaseClass
|
||||
case class GetUserByUsernamePassword(authInfo: AuthInfo, password: String) extends TopicCaseClass
|
||||
case class GetAccounts(authInfo: AuthInfo) extends TopicCaseClass
|
||||
case class GetAccountbyAccountID(authInfo: AuthInfo, bankId: String, accountId: String)extends TopicCaseClass
|
||||
case class GetAccountbyAccountNumber(authInfo: AuthInfo, bankId: String, accountNumber: String)extends TopicCaseClass
|
||||
case class GetTransactions(authInfo: AuthInfo,bankId: String, accountId: String, limit: Int, fromDate: String, toDate: String) extends TopicCaseClass
|
||||
case class GetTransaction(authInfo: AuthInfo, bankId: String, accountId: String, transactionId: String) extends TopicCaseClass
|
||||
case class CreateCBSAuthToken(authInfo: AuthInfo) extends TopicCaseClass
|
||||
/**
|
||||
* case classes used as payloads
|
||||
*/
|
||||
case class AdapterInfo(data: InboundAdapterInfo)
|
||||
case class UserWrapper(data: Option[InboundValidatedUser])
|
||||
case class Banks(authInfo: AuthInfo, data: List[InboundBank])
|
||||
case class BankWrapper(authInfo: AuthInfo, data: InboundBank)
|
||||
case class InboundBankAccounts(authInfo: AuthInfo, data: List[InboundAccountJune2017])
|
||||
case class InboundBankAccount(authInfo: AuthInfo, data: InboundAccountJune2017)
|
||||
case class InboundTransactions(authInfo: AuthInfo, data: List[InternalTransaction])
|
||||
case class InboundTransaction(authInfo: AuthInfo, data: InternalTransaction)
|
||||
@ -0,0 +1,146 @@
|
||||
package code.bankconnectors.vJune
|
||||
|
||||
import java.text.SimpleDateFormat
|
||||
import java.util.{Date, Locale}
|
||||
|
||||
import code.api.util.APIUtil.InboundMessageBase
|
||||
import code.api.v1_2_1.AmountOfMoneyJsonV121
|
||||
import code.api.v1_4_0.JSONFactory1_4_0.CustomerFaceImageJson
|
||||
import code.api.v2_1_0.CustomerCreditRatingJSON
|
||||
import code.bankconnectors.Topics._
|
||||
import code.bankconnectors._
|
||||
import code.branches.{InboundAdapterInfo, InboundBank, InboundValidatedUser, InternalTransaction}
|
||||
import code.customer.Customer
|
||||
import code.model.dataAccess.MappedBankAccountData
|
||||
import code.model.{AccountId, BankAccount, BankId}
|
||||
import net.liftweb.mapper.By
|
||||
import net.liftweb.util.Helpers.today
|
||||
|
||||
case class AuthInfo(userId: String, username: String, cbsToken: String)
|
||||
|
||||
/**
|
||||
* case classes used to define topics
|
||||
*/
|
||||
|
||||
case class GetAdapterInfo(date: String) extends GetAdapterInfoTopic
|
||||
case class GetBanks(authInfo: AuthInfo, criteria: String) extends GetBanksTopic
|
||||
case class GetBank(authInfo: AuthInfo, bankId: String) extends GetBankTopic
|
||||
case class GetUserByUsernamePassword(authInfo: AuthInfo, password: String) extends GetUserByUsernamePasswordTopic
|
||||
case class OutboundGetAccounts(authInfo: AuthInfo, customers:InternalCustomers ) extends GetAccountsTopic
|
||||
case class GetAccountbyAccountID(authInfo: AuthInfo, bankId: String, accountId: String)extends GetAccountbyAccountIDTopic
|
||||
case class GetAccountbyAccountNumber(authInfo: AuthInfo, bankId: String, accountNumber: String)extends GetAccountbyAccountNumberTopic
|
||||
case class GetTransactions(authInfo: AuthInfo,bankId: String, accountId: String, limit: Int, fromDate: String, toDate: String) extends GetTransactionsTopic
|
||||
case class GetTransaction(authInfo: AuthInfo, bankId: String, accountId: String, transactionId: String) extends GetTransactionTopic
|
||||
case class CreateCBSAuthToken(authInfo: AuthInfo) extends CreateCBSAuthTokenTopic
|
||||
|
||||
/**
|
||||
* case classes used as payloads
|
||||
*/
|
||||
case class AdapterInfo(data: InboundAdapterInfo)
|
||||
case class UserWrapper(data: Option[InboundValidatedUser])
|
||||
case class Banks(authInfo: AuthInfo, data: List[InboundBank])
|
||||
case class BankWrapper(authInfo: AuthInfo, data: InboundBank)
|
||||
case class InboundBankAccounts(authInfo: AuthInfo, data: List[InboundAccountJune2017])
|
||||
case class InboundBankAccount(authInfo: AuthInfo, data: InboundAccountJune2017)
|
||||
case class InboundTransactions(authInfo: AuthInfo, data: List[InternalTransaction])
|
||||
case class InboundTransaction(authInfo: AuthInfo, data: InternalTransaction)
|
||||
|
||||
case class InboundAccountJune2017(
|
||||
errorCode: String,
|
||||
cbsToken: String,
|
||||
bankId: String,
|
||||
branchId: String,
|
||||
accountId: String,
|
||||
accountNumber: String,
|
||||
accountType: String,
|
||||
balanceAmount: String,
|
||||
balanceCurrency: String,
|
||||
owners: List[String],
|
||||
viewsToGenerate: List[String],
|
||||
bankRoutingScheme: String,
|
||||
bankRoutingAddress: String,
|
||||
branchRoutingScheme: String,
|
||||
branchRoutingAddress: String,
|
||||
accountRoutingScheme: String,
|
||||
accountRoutingAddress: String
|
||||
) extends InboundMessageBase with InboundAccountCommon
|
||||
|
||||
case class BankAccountJune2017(r: InboundAccountJune2017) extends BankAccount {
|
||||
|
||||
def accountId: AccountId = AccountId(r.accountId)
|
||||
def accountType: String = r.accountType
|
||||
def balance: BigDecimal = BigDecimal(r.balanceAmount)
|
||||
def currency: String = r.balanceCurrency
|
||||
def name: String = r.owners.head
|
||||
// Note: swift_bic--> swiftBic, but it extends from BankAccount
|
||||
def swift_bic: Option[String] = Some("swift_bic")
|
||||
// Note: deprecated, extends from BankAccount
|
||||
def iban: Option[String] = Some("iban")
|
||||
def number: String = r.accountNumber
|
||||
def bankId: BankId = BankId(r.bankId)
|
||||
def lastUpdate: Date = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'", Locale.ENGLISH).parse(today.getTime.toString)
|
||||
def accountHolder: String = r.owners.head
|
||||
|
||||
// Fields modifiable from OBP are stored in mapper
|
||||
def label: String = (for {
|
||||
d <- MappedBankAccountData.find(By(MappedBankAccountData.accountId, r.accountId))
|
||||
} yield {
|
||||
d.getLabel
|
||||
}).getOrElse(r.accountNumber)
|
||||
|
||||
def accountRoutingScheme: String = r.accountRoutingScheme
|
||||
def accountRoutingAddress: String = r.accountRoutingAddress
|
||||
def branchId: String = r.branchId
|
||||
|
||||
}
|
||||
|
||||
case class InternalCustomer(
|
||||
customer_id: String,
|
||||
customer_number: String,
|
||||
legal_name: String,
|
||||
mobile_phone_number: String,
|
||||
email: String,
|
||||
face_image: CustomerFaceImageJson,
|
||||
date_of_birth: Date,
|
||||
relationship_status: String,
|
||||
dependants: Int,
|
||||
dob_of_dependants: List[Date],
|
||||
credit_rating: Option[CustomerCreditRatingJSON],
|
||||
credit_limit: Option[AmountOfMoneyJsonV121],
|
||||
highest_education_attained: String,
|
||||
employment_status: String,
|
||||
kyc_status: Boolean,
|
||||
last_ok_date: Date
|
||||
)
|
||||
|
||||
case class InternalCustomers(customers: List[InternalCustomer])
|
||||
|
||||
object JsonFactory_vJune2017 {
|
||||
def createCustomerJson(cInfo : Customer) : InternalCustomer = {
|
||||
InternalCustomer(
|
||||
customer_id = cInfo.customerId,
|
||||
customer_number = cInfo.number,
|
||||
legal_name = cInfo.legalName,
|
||||
mobile_phone_number = cInfo.mobileNumber,
|
||||
email = cInfo.email,
|
||||
face_image = CustomerFaceImageJson(url = cInfo.faceImage.url,
|
||||
date = cInfo.faceImage.date),
|
||||
date_of_birth = cInfo.dateOfBirth,
|
||||
relationship_status = cInfo.relationshipStatus,
|
||||
dependants = cInfo.dependents,
|
||||
dob_of_dependants = cInfo.dobOfDependents,
|
||||
credit_rating = Option(CustomerCreditRatingJSON(rating = cInfo.creditRating.rating, source = cInfo.creditRating.source)),
|
||||
credit_limit = Option(AmountOfMoneyJsonV121(currency = cInfo.creditLimit.currency, amount = cInfo.creditLimit.amount)),
|
||||
highest_education_attained = cInfo.highestEducationAttained,
|
||||
employment_status = cInfo.employmentStatus,
|
||||
kyc_status = cInfo.kycStatus,
|
||||
last_ok_date = cInfo.lastOkDate
|
||||
)
|
||||
}
|
||||
|
||||
def createCustomersJson(customers : List[Customer]) : InternalCustomers = {
|
||||
InternalCustomers(customers.map(createCustomerJson))
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@ -29,16 +29,17 @@ Berlin 13359, Germany
|
||||
Ayoub Benali: ayoub AT tesobe DOT com
|
||||
|
||||
*/
|
||||
package code.bankconnectors
|
||||
package code.branches
|
||||
|
||||
import java.text.SimpleDateFormat
|
||||
import java.util.{Date, Locale}
|
||||
|
||||
import code.api.util.APIUtil.{InboundMessageBase, MessageDoc, OutboundMessageBase}
|
||||
import code.bankconnectors.InboundUser
|
||||
import code.fx.FXRate
|
||||
import code.metadata.counterparties.CounterpartyTrait
|
||||
import code.model.dataAccess.MappedBankAccountData
|
||||
import code.model._
|
||||
import code.model.dataAccess.MappedBankAccountData
|
||||
import code.transactionrequests.TransactionRequestTypeCharge
|
||||
import net.liftweb.json.JsonAST.JValue
|
||||
import net.liftweb.mapper.By
|
||||
@ -1,9 +1,9 @@
|
||||
package code.api
|
||||
|
||||
import code.bankconnectors.InboundAccountJune2017
|
||||
import code.bankconnectors.vJune.InboundAccountJune2017
|
||||
import net.liftweb.json.{Extraction, compact, render}
|
||||
import code.util.Helper.MdcLoggable
|
||||
import net.liftweb.common.{ Full}
|
||||
import net.liftweb.common.Full
|
||||
import org.scalatest._
|
||||
|
||||
class gateWayloginTest extends FeatureSpec
|
||||
|
||||
@ -6,9 +6,9 @@ import code.api.util.APIUtil.OAuth._
|
||||
import code.api.v2_1_0.{BranchJsonPostV210, TransactionRequestCommonBodyJSON}
|
||||
import code.atms.Atms.AtmId
|
||||
import code.atms.MappedAtm
|
||||
import code.bankconnectors.{Connector, InboundAdapterInfo, InboundUser, OBPQueryParam}
|
||||
import code.bankconnectors.{Connector, InboundUser, OBPQueryParam}
|
||||
import code.branches.Branches.{Branch, BranchId, BranchT}
|
||||
import code.branches.MappedBranch
|
||||
import code.branches.{InboundAdapterInfo, MappedBranch}
|
||||
import code.fx.FXRate
|
||||
import code.management.ImporterAPI.ImporterTransaction
|
||||
import code.metadata.counterparties.CounterpartyTrait
|
||||
|
||||
@ -6,8 +6,9 @@ import code.api.v2_1_0.{BranchJsonPostV210, TransactionRequestCommonBodyJSON}
|
||||
import code.atms.Atms.AtmId
|
||||
import code.atms.MappedAtm
|
||||
import code.bankconnectors._
|
||||
import code.bankconnectors.vJune.InboundAccountJune2017
|
||||
import code.branches.Branches.{Branch, BranchId, BranchT}
|
||||
import code.branches.MappedBranch
|
||||
import code.branches.{InboundAdapterInfo, MappedBranch}
|
||||
import code.fx.FXRate
|
||||
import code.management.ImporterAPI.ImporterTransaction
|
||||
import code.metadata.counterparties.CounterpartyTrait
|
||||
|
||||
Loading…
Reference in New Issue
Block a user