mirror of
https://github.com/OpenBankProject/OBP-API.git
synced 2026-02-06 11:06:49 +00:00
feature/add regulated entity attribute management functionality
This commit is contained in:
parent
52090a2532
commit
c056777b0d
@ -133,10 +133,10 @@ import code.views.Views
|
||||
import code.views.system.{AccountAccess, ViewDefinition, ViewPermission}
|
||||
import code.webhook.{BankAccountNotificationWebhook, MappedAccountWebhook, SystemAccountNotificationWebhook}
|
||||
import code.webuiprops.WebUiProps
|
||||
import code.regulatedentities.attribute.RegulatedEntityAttribute
|
||||
import com.openbankproject.commons.model.ErrorMessage
|
||||
import com.openbankproject.commons.util.Functions.Implicits._
|
||||
import com.openbankproject.commons.util.{ApiVersion, Functions}
|
||||
|
||||
import javax.mail.internet.MimeMessage
|
||||
import net.liftweb.common._
|
||||
import net.liftweb.db.{DB, DBLogEntry}
|
||||
@ -1124,7 +1124,8 @@ object ToSchemify {
|
||||
MappedCustomerDependant,
|
||||
AttributeDefinition,
|
||||
CustomerAccountLink,
|
||||
TransactionIdMapping
|
||||
TransactionIdMapping,
|
||||
RegulatedEntityAttribute,
|
||||
)
|
||||
|
||||
// start grpc server
|
||||
|
||||
@ -0,0 +1,104 @@
|
||||
package code.regulatedentities.attribute
|
||||
|
||||
import code.util.{MappedUUID, UUIDString}
|
||||
import com.openbankproject.commons.ExecutionContext.Implicits.global
|
||||
import com.openbankproject.commons.model.enums.RegulatedEntityAttributeType
|
||||
import com.openbankproject.commons.model.{RegulatedEntityAttributeTrait, RegulatedEntityId}
|
||||
import net.liftweb.common.{Box, Empty, Full}
|
||||
import net.liftweb.mapper.{MappedBoolean, _}
|
||||
import net.liftweb.util.Helpers.tryo
|
||||
|
||||
import scala.concurrent.Future
|
||||
|
||||
|
||||
object RegulatedEntityAttributeProvider extends RegulatedEntityAttributeProviderTrait {
|
||||
|
||||
override def getRegulatedEntityAttributesFromProvider(regulatedEntityId: RegulatedEntityId): Future[Box[List[RegulatedEntityAttribute]]] =
|
||||
Future {
|
||||
Box !! RegulatedEntityAttribute.findAll(
|
||||
By(RegulatedEntityAttribute.RegulatedEntityId_, regulatedEntityId.value)
|
||||
)
|
||||
}
|
||||
|
||||
override def getRegulatedEntityAttributeById(RegulatedEntityAttributeId: String): Future[Box[RegulatedEntityAttribute]] = Future {
|
||||
RegulatedEntityAttribute.find(By(RegulatedEntityAttribute.RegulatedEntityAttributeId, RegulatedEntityAttributeId))
|
||||
}
|
||||
|
||||
override def createOrUpdateRegulatedEntityAttribute(
|
||||
regulatedEntityId: RegulatedEntityId,
|
||||
RegulatedEntityAttributeId: Option[String],
|
||||
name: String,
|
||||
attributeType: RegulatedEntityAttributeType.Value,
|
||||
value: String,
|
||||
isActive: Option[Boolean]
|
||||
): Future[Box[RegulatedEntityAttribute]] = {
|
||||
RegulatedEntityAttributeId match {
|
||||
case Some(id) => Future {
|
||||
RegulatedEntityAttribute.find(By(RegulatedEntityAttribute.RegulatedEntityAttributeId, id)) match {
|
||||
case Full(attribute) => tryo {
|
||||
attribute
|
||||
.RegulatedEntityId_(regulatedEntityId.value)
|
||||
.Name(name)
|
||||
.Type(attributeType.toString)
|
||||
.`Value`(value)
|
||||
.IsActive(isActive.getOrElse(true))
|
||||
.saveMe()
|
||||
}
|
||||
case _ => Empty
|
||||
}
|
||||
}
|
||||
case None => Future {
|
||||
Full {
|
||||
RegulatedEntityAttribute.create
|
||||
.RegulatedEntityId_(regulatedEntityId.value)
|
||||
.Name(name)
|
||||
.Type(attributeType.toString())
|
||||
.`Value`(value)
|
||||
.IsActive(isActive.getOrElse(true))
|
||||
.saveMe()
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
override def deleteRegulatedEntityAttribute(RegulatedEntityAttributeId: String): Future[Box[Boolean]] = Future {
|
||||
tryo (
|
||||
RegulatedEntityAttribute.bulkDelete_!!(By(RegulatedEntityAttribute.RegulatedEntityAttributeId, RegulatedEntityAttributeId))
|
||||
)
|
||||
}
|
||||
|
||||
override def deleteRegulatedEntityAttributesByRegulatedEntityId(regulatedEntityId: RegulatedEntityId): Future[Box[Boolean]]= Future {
|
||||
tryo(
|
||||
RegulatedEntityAttribute.bulkDelete_!!(By(RegulatedEntityAttribute.RegulatedEntityId_, regulatedEntityId.value))
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
class RegulatedEntityAttribute extends RegulatedEntityAttributeTrait with LongKeyedMapper[RegulatedEntityAttribute] with IdPK {
|
||||
|
||||
override def getSingleton = RegulatedEntityAttribute
|
||||
|
||||
object RegulatedEntityId_ extends UUIDString(this) {
|
||||
override def dbColumnName = "RegulatedEntityId"
|
||||
}
|
||||
object RegulatedEntityAttributeId extends MappedUUID(this)
|
||||
object Name extends MappedString(this, 50)
|
||||
object Type extends MappedString(this, 50)
|
||||
object `Value` extends MappedString(this, 255)
|
||||
object IsActive extends MappedBoolean(this) {
|
||||
override def defaultValue = true
|
||||
}
|
||||
|
||||
override def regulatedEntityId: RegulatedEntityId = RegulatedEntityId(RegulatedEntityId_.get)
|
||||
override def regulatedEntityAttributeId: String = RegulatedEntityAttributeId.get
|
||||
override def name: String = Name.get
|
||||
override def attributeType: RegulatedEntityAttributeType.Value = RegulatedEntityAttributeType.withName(Type.get)
|
||||
override def value: String = `Value`.get
|
||||
override def isActive: Option[Boolean] = if (IsActive.jdbcFriendly(IsActive.calcFieldName) == null) { None } else Some(IsActive.get)
|
||||
|
||||
}
|
||||
|
||||
object RegulatedEntityAttribute extends RegulatedEntityAttribute with LongKeyedMetaMapper[RegulatedEntityAttribute] {
|
||||
override def dbIndexes: List[BaseIndex[RegulatedEntityAttribute]] = Index(RegulatedEntityId_) :: super.dbIndexes
|
||||
}
|
||||
|
||||
@ -0,0 +1,50 @@
|
||||
package code.regulatedentities.attribute
|
||||
|
||||
/* For ProductAttribute */
|
||||
|
||||
import com.openbankproject.commons.model.{RegulatedEntityId, BankId}
|
||||
import com.openbankproject.commons.model.enums.RegulatedEntityAttributeType
|
||||
import net.liftweb.common.{Box, Logger}
|
||||
import net.liftweb.util.SimpleInjector
|
||||
|
||||
import scala.concurrent.Future
|
||||
|
||||
object RegulatedEntityAttributeX extends SimpleInjector {
|
||||
|
||||
val regulatedEntityAttributeProvider = new Inject(buildOne _) {}
|
||||
|
||||
def buildOne: RegulatedEntityAttributeProviderTrait = RegulatedEntityAttributeProvider
|
||||
|
||||
// Helper to get the count out of an option
|
||||
def countOfRegulatedEntityAttribute(listOpt: Option[List[RegulatedEntityAttribute]]): Int = {
|
||||
val count = listOpt match {
|
||||
case Some(list) => list.size
|
||||
case None => 0
|
||||
}
|
||||
count
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
trait RegulatedEntityAttributeProviderTrait {
|
||||
|
||||
private val logger = Logger(classOf[RegulatedEntityAttributeProviderTrait])
|
||||
|
||||
def getRegulatedEntityAttributesFromProvider(regulatedEntityId: RegulatedEntityId): Future[Box[List[RegulatedEntityAttribute]]]
|
||||
|
||||
def getRegulatedEntityAttributeById(regulatedEntityAttributeId: String): Future[Box[RegulatedEntityAttribute]]
|
||||
|
||||
def createOrUpdateRegulatedEntityAttribute(
|
||||
regulatedEntityId: RegulatedEntityId,
|
||||
regulatedEntityAttributeId: Option[String],
|
||||
name: String,
|
||||
attributeType: RegulatedEntityAttributeType.Value,
|
||||
value: String,
|
||||
isActive: Option[Boolean]): Future[Box[RegulatedEntityAttribute]]
|
||||
|
||||
def deleteRegulatedEntityAttribute(regulatedEntityAttributeId: String): Future[Box[Boolean]]
|
||||
|
||||
def deleteRegulatedEntityAttributesByRegulatedEntityId(regulatedEntityId: RegulatedEntityId): Future[Box[Boolean]]
|
||||
// End of Trait
|
||||
}
|
||||
@ -128,6 +128,13 @@ case class TransactionTypeId(val value : String) {
|
||||
object TransactionTypeId {
|
||||
def unapply(id : String) = Some(TransactionTypeId(id))
|
||||
}
|
||||
case class RegulatedEntityId(val value : String) {
|
||||
override def toString = value
|
||||
}
|
||||
|
||||
object RegulatedEntityId {
|
||||
def unapply(id : String) = Some(RegulatedEntityId(id))
|
||||
}
|
||||
|
||||
case class AccountId(val value : String) {
|
||||
override def toString = value
|
||||
|
||||
@ -532,6 +532,15 @@ trait AtmAttributeTrait {
|
||||
def isActive: Option[Boolean]
|
||||
}
|
||||
|
||||
trait RegulatedEntityAttributeTrait {
|
||||
def regulatedEntityId: RegulatedEntityId
|
||||
def regulatedEntityAttributeId: String
|
||||
def attributeType: RegulatedEntityAttributeType.Value
|
||||
def name: String
|
||||
def value: String
|
||||
def isActive: Option[Boolean]
|
||||
}
|
||||
|
||||
trait BankAttributeTrait {
|
||||
def bankId: BankId
|
||||
def bankAttributeId: String
|
||||
|
||||
@ -22,6 +22,13 @@ object AtmAttributeType extends OBPEnumeration[AtmAttributeType]{
|
||||
object DOUBLE extends Value
|
||||
object DATE_WITH_DAY extends Value
|
||||
}
|
||||
sealed trait RegulatedEntityAttributeType extends EnumValue
|
||||
object RegulatedEntityAttributeType extends OBPEnumeration[RegulatedEntityAttributeType]{
|
||||
object STRING extends Value
|
||||
object INTEGER extends Value
|
||||
object DOUBLE extends Value
|
||||
object DATE_WITH_DAY extends Value
|
||||
}
|
||||
sealed trait BankAttributeType extends EnumValue
|
||||
object BankAttributeType extends OBPEnumeration[BankAttributeType]{
|
||||
object STRING extends Value
|
||||
|
||||
Loading…
Reference in New Issue
Block a user