From dc8520bcd539fcd9111ee956b0004a05928d6147 Mon Sep 17 00:00:00 2001 From: hongwei Date: Mon, 9 Dec 2024 17:47:39 +0100 Subject: [PATCH] feature/added the getCounterpartyLimitStatus endpoint --- .../SwaggerDefinitionsJSON.scala | 27 ++++ .../scala/code/api/v5_1_0/APIMethods510.scala | 144 ++++++++++++++++++ .../code/api/v5_1_0/JSONFactory5.1.0.scala | 27 ++++ 3 files changed, 198 insertions(+) diff --git a/obp-api/src/main/scala/code/api/ResourceDocs1_4_0/SwaggerDefinitionsJSON.scala b/obp-api/src/main/scala/code/api/ResourceDocs1_4_0/SwaggerDefinitionsJSON.scala index 53ab522b7..73d5b8b73 100644 --- a/obp-api/src/main/scala/code/api/ResourceDocs1_4_0/SwaggerDefinitionsJSON.scala +++ b/obp-api/src/main/scala/code/api/ResourceDocs1_4_0/SwaggerDefinitionsJSON.scala @@ -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) 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 30037f3b9..f40dc89bb 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 @@ -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, 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 e3eb82634..bb0f98848 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 @@ -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,