feature/added the getCounterpartyLimitStatus endpoint

This commit is contained in:
hongwei 2024-12-09 17:47:39 +01:00
parent 4b9438110a
commit dc8520bcd5
3 changed files with 198 additions and 0 deletions

View File

@ -5482,6 +5482,33 @@ object SwaggerDefinitionsJSON {
max_total_amount = maxTotalAmountExample.value,
max_number_of_transactions = maxNumberOfTransactionsExample.value.toInt
)
val counterpartyLimitStatus = CounterpartyLimitStatus(
currency_status = currencyExample.value,
max_monthly_amount_status = maxSingleAmountExample.value,
max_number_of_monthly_transactions_status = maxNumberOfMonthlyTransactionsExample.value.toInt,
max_yearly_amount_status = maxYearlyAmountExample.value,
max_number_of_yearly_transactions_status = maxNumberOfYearlyTransactionsExample.value.toInt,
max_total_amount_status = maxTotalAmountExample.value,
max_number_of_transactions_status = maxNumberOfTransactionsExample.value.toInt
)
val counterpartyLimitStatusV510 = CounterpartyLimitStatusV510(
counterparty_limit_id = counterpartyLimitIdExample.value,
bank_id = bankIdExample.value,
account_id = accountIdExample.value,
view_id = viewIdExample.value,
counterparty_id = counterpartyIdExample.value,
currency = currencyExample.value,
max_single_amount = maxSingleAmountExample.value,
max_monthly_amount = maxMonthlyAmountExample.value,
max_number_of_monthly_transactions = maxNumberOfMonthlyTransactionsExample.value.toInt,
max_yearly_amount = maxYearlyAmountExample.value,
max_number_of_yearly_transactions = maxNumberOfYearlyTransactionsExample.value.toInt,
max_total_amount = maxTotalAmountExample.value,
max_number_of_transactions = maxNumberOfTransactionsExample.value.toInt,
status = counterpartyLimitStatus
)
val atmsJsonV510 = AtmsJsonV510(
atms = List(atmJsonV510)

View File

@ -54,6 +54,7 @@ import net.liftweb.mapper.By
import net.liftweb.util.Helpers.tryo
import net.liftweb.util.{Helpers, StringHelpers}
import java.time.{LocalDate, ZoneId}
import java.util.Date
import scala.collection.immutable.{List, Nil}
import scala.collection.mutable.ArrayBuffer
@ -3117,6 +3118,149 @@ trait APIMethods510 {
}
}
staticResourceDocs += ResourceDoc(
getCounterpartyLimitStatus,
implementedInApiVersion,
nameOf(getCounterpartyLimitStatus),
"GET",
"/banks/BANK_ID/accounts/ACCOUNT_ID/views/VIEW_ID/counterparties/COUNTERPARTY_ID/limits-status",
"Get Counterparty Limit Status",
s"""Get Counterparty Limit Status.""",
EmptyBody,
counterpartyLimitStatusV510,
List(
$UserNotLoggedIn,
$BankNotFound,
$BankAccountNotFound,
$UserNoPermissionAccessView,
$CounterpartyNotFoundByCounterpartyId,
InvalidJsonFormat,
UnknownError
),
List(apiTagCounterpartyLimits),
)
lazy val getCounterpartyLimitStatus: OBPEndpoint = {
case "banks" :: BankId(bankId) :: "accounts" :: AccountId(accountId) :: "views" :: ViewId(viewId) ::"counterparties" :: CounterpartyId(counterpartyId) ::"limits-status" :: Nil JsonGet _ => {
cc => implicit val ec = EndpointContext(Some(cc))
for {
(counterpartyLimit, callContext) <- NewStyle.function.getCounterpartyLimit(
bankId.value,
accountId.value,
viewId.value,
counterpartyId.value,
cc.callContext
)
// Get the first day of the current month
firstDayOfMonth: LocalDate = LocalDate.now().withDayOfMonth(1)
// Get the last day of the current month
lastDayOfMonth: LocalDate = LocalDate.now().withDayOfMonth(
LocalDate.now().lengthOfMonth()
)
// Get the first day of the current year
firstDayOfYear: LocalDate = LocalDate.now().withDayOfYear(1)
// Get the last day of the current year
lastDayOfYear: LocalDate = LocalDate.now().withDayOfYear(
LocalDate.now().lengthOfYear()
)
(fromBankAccount, callContext) <- NewStyle.function.getBankAccount(bankId, accountId, callContext)
// Convert LocalDate to Date
zoneId: ZoneId = ZoneId.systemDefault()
firstCurrentMonthDate: Date = Date.from(firstDayOfMonth.atStartOfDay(zoneId).toInstant)
lastCurrentMonthDate: Date = Date.from(lastDayOfMonth.atStartOfDay(zoneId).toInstant)
firstCurrentYearDate: Date = Date.from(firstDayOfYear.atStartOfDay(zoneId).toInstant)
lastCurrentYearDate: Date = Date.from(lastDayOfYear.atStartOfDay(zoneId).toInstant)
defaultFromDate: Date = theEpochTime
defaultToDate: Date = APIUtil.ToDateInFuture
(sumOfTransactionsFromAccountToCounterpartyMonthly, callContext) <- NewStyle.function.getSumOfTransactionsFromAccountToCounterparty(
bankId,
accountId,
counterpartyId,
firstCurrentMonthDate: Date,
lastCurrentMonthDate: Date,
callContext: Option[CallContext]
)
(countOfTransactionsFromAccountToCounterpartyMonthly, callContext) <- NewStyle.function.getCountOfTransactionsFromAccountToCounterparty(
bankId,
accountId,
counterpartyId,
firstCurrentMonthDate: Date,
lastCurrentMonthDate: Date,
callContext: Option[CallContext]
)
(sumOfTransactionsFromAccountToCounterpartyYearly, callContext) <- NewStyle.function.getSumOfTransactionsFromAccountToCounterparty(
bankId,
accountId,
counterpartyId,
firstCurrentYearDate: Date,
lastCurrentYearDate: Date,
callContext: Option[CallContext]
)
(countOfTransactionsFromAccountToCounterpartyYearly, callContext) <- NewStyle.function.getCountOfTransactionsFromAccountToCounterparty(
bankId,
accountId,
counterpartyId,
firstCurrentYearDate: Date,
lastCurrentYearDate: Date,
callContext: Option[CallContext]
)
(sumOfAllTransactionsFromAccountToCounterparty, callContext) <- NewStyle.function.getSumOfTransactionsFromAccountToCounterparty(
bankId,
accountId,
counterpartyId,
defaultFromDate: Date,
defaultToDate: Date,
callContext: Option[CallContext]
)
(countOfAllTransactionsFromAccountToCounterparty, callContext) <- NewStyle.function.getCountOfTransactionsFromAccountToCounterparty(
bankId,
accountId,
counterpartyId,
defaultFromDate: Date,
defaultToDate: Date,
callContext: Option[CallContext]
)
} yield {
(CounterpartyLimitStatusV510(
counterparty_limit_id = counterpartyLimit.counterpartyLimitId: String,
bank_id = counterpartyLimit.bankId: String,
account_id = counterpartyLimit.accountId: String,
view_id = counterpartyLimit.viewId: String,
counterparty_id = counterpartyLimit.counterpartyId: String,
currency = counterpartyLimit.currency: String,
max_single_amount = counterpartyLimit.maxSingleAmount.toString(),
max_monthly_amount = counterpartyLimit.maxMonthlyAmount.toString(),
max_number_of_monthly_transactions = counterpartyLimit.maxNumberOfMonthlyTransactions: Int,
max_yearly_amount = counterpartyLimit.maxYearlyAmount.toString(),
max_number_of_yearly_transactions = counterpartyLimit.maxNumberOfYearlyTransactions: Int,
max_total_amount = counterpartyLimit.maxTotalAmount.toString(),
max_number_of_transactions = counterpartyLimit.maxNumberOfTransactions: Int,
status = CounterpartyLimitStatus(
currency_status = fromBankAccount.currency,
max_monthly_amount_status = sumOfTransactionsFromAccountToCounterpartyMonthly.amount,
max_number_of_monthly_transactions_status = countOfTransactionsFromAccountToCounterpartyMonthly,
max_yearly_amount_status = sumOfTransactionsFromAccountToCounterpartyYearly.amount,
max_number_of_yearly_transactions_status = countOfTransactionsFromAccountToCounterpartyYearly,
max_total_amount_status = sumOfAllTransactionsFromAccountToCounterparty.amount,
max_number_of_transactions_status = countOfAllTransactionsFromAccountToCounterparty
)
), HttpCode.`200`(callContext))
}
}
}
staticResourceDocs += ResourceDoc(
deleteCounterpartyLimit,
implementedInApiVersion,

View File

@ -216,6 +216,33 @@ case class CounterpartyLimitV510(
max_number_of_transactions: Int
)
case class CounterpartyLimitStatus(
currency_status: String,
max_monthly_amount_status: String,
max_number_of_monthly_transactions_status: Int,
max_yearly_amount_status: String,
max_number_of_yearly_transactions_status: Int,
max_total_amount_status: String,
max_number_of_transactions_status: Int
)
case class CounterpartyLimitStatusV510(
counterparty_limit_id: String,
bank_id: String,
account_id: String,
view_id: String,
counterparty_id: String,
currency: String,
max_single_amount: String,
max_monthly_amount: String,
max_number_of_monthly_transactions: Int,
max_yearly_amount: String,
max_number_of_yearly_transactions: Int,
max_total_amount: String,
max_number_of_transactions: Int,
status: CounterpartyLimitStatus
)
case class AtmJsonV510 (
id : Option[String],
bank_id : String,