all the application configurations has been defined in application.conf, application-dev.conf and application-prod.conf. Also made the ktor server configuration in external file.
This commit is contained in:
@@ -1,44 +1,16 @@
|
||||
package net.ipksindia.dao
|
||||
|
||||
import model.TransactionRequest
|
||||
import net.ipksindia.config.AppConfig
|
||||
import java.sql.Date
|
||||
import java.sql.DriverManager
|
||||
import java.sql.ResultSet
|
||||
import java.util.*
|
||||
|
||||
class TransactionDao {
|
||||
private val transactionRequestQuery = """
|
||||
SELECT
|
||||
txn_no,
|
||||
TRIM(src_ac_no) AS src_ac_no,
|
||||
TRIM(dest_ac_no) AS dest_ac_no,
|
||||
ifsc_code,
|
||||
txn_amt,
|
||||
txn_date,
|
||||
t.teller_id,
|
||||
CASE
|
||||
WHEN t.ifsc_code LIKE 'WBSC%' THEN 'FAILED'
|
||||
ELSE 'RECEIVED'
|
||||
END AS status,
|
||||
SUBSTR(REGEXP_REPLACE(REGEXP_REPLACE(UPPER(beneficiary_name), '[^A-Z0-9 ]', ''), ' {2,}', ' '), 1, 35) AS beneficiary_name,
|
||||
beneficiary_add,
|
||||
t.pacs_id,
|
||||
comm_txn_no,
|
||||
comm_txn_amt,
|
||||
dccb_code,
|
||||
TO_NUMBER(cbs_br_code) AS br_code,
|
||||
SUBSTR(REGEXP_REPLACE(REGEXP_REPLACE(UPPER(remm_name), '[^A-Z0-9 ]', ''), ' {2,}', ' '),1,35) AS remitter_name,
|
||||
ipks_accno AS pacs_acc_no,
|
||||
da.link_accno AS cbs_sb_acc_no,
|
||||
'pacs_db' AS db_name
|
||||
FROM neft_rtgs_txn t
|
||||
JOIN dep_account da ON t.ipks_accno = da.key_1
|
||||
WHERE
|
||||
t.txn_date = (SELECT system_date FROM system_date)
|
||||
AND t.STATUS = 'A'
|
||||
AND t.bank_channel = 'SCB'
|
||||
AND da.link_accno IS NOT NULL
|
||||
""".trimIndent()
|
||||
class TransactionDao() {
|
||||
|
||||
private val dbUrl = AppConfig.databaseConfig.dbUrl
|
||||
private val dbUser = AppConfig.databaseConfig.user
|
||||
private val dbPassword = AppConfig.databaseConfig.password
|
||||
|
||||
private val singleTransactionRequestQuery = """
|
||||
SELECT
|
||||
@@ -97,92 +69,48 @@ class TransactionDao {
|
||||
""".trimIndent()
|
||||
|
||||
fun updateSuccessTransaction(request: TransactionRequest, transferQueueNumber: String, neftQueueNumber: String) {
|
||||
val dbUrl = getDatabaseUrl()
|
||||
val (dbUser, dbPassword) = getUserCredentials()
|
||||
|
||||
DriverManager.getConnection(dbUrl, dbUser, dbPassword).use { connection ->
|
||||
connection.prepareStatement(transactionUpdateQuery).also {
|
||||
it.setString(1, request.transactionNumber)
|
||||
it.setString(2, request.pacsCurrentAccountNumber)
|
||||
it.setString(3, request.neftBeneficiaryAccountNumber)
|
||||
it.setString(4, request.ifscCode)
|
||||
it.setString(5, request.amount)
|
||||
it.setDate(6, Date.valueOf(request.date))
|
||||
it.setString(7, request.tellerId)
|
||||
it.setString(8, "PROCESSED")
|
||||
it.setString(9, request.beneficiaryName)
|
||||
it.setString(10, request.beneficiaryAddress)
|
||||
it.setString(11, request.pacsId)
|
||||
it.setString(12, request.commissionTransactionNumber)
|
||||
it.setString(13, request.commissionAmount)
|
||||
it.setString(14, request.dccbCode)
|
||||
it.setString(15, request.branchCode)
|
||||
it.setString(16, request.remitterName)
|
||||
it.setString(17, transferQueueNumber)
|
||||
it.setString(18, request.pacsAccountNumber)
|
||||
it.setString(19, neftQueueNumber)
|
||||
}.use {
|
||||
it.executeUpdate()
|
||||
DriverManager
|
||||
.getConnection(dbUrl, dbUser, dbPassword)
|
||||
.use { connection ->
|
||||
connection
|
||||
.prepareStatement(transactionUpdateQuery)
|
||||
.also {
|
||||
it.setString(1, request.transactionNumber)
|
||||
it.setString(2, request.pacsCurrentAccountNumber)
|
||||
it.setString(3, request.neftBeneficiaryAccountNumber)
|
||||
it.setString(4, request.ifscCode)
|
||||
it.setString(5, request.amount)
|
||||
it.setDate(6, Date.valueOf(request.date))
|
||||
it.setString(7, request.tellerId)
|
||||
it.setString(8, "PROCESSED")
|
||||
it.setString(9, request.beneficiaryName)
|
||||
it.setString(10, request.beneficiaryAddress)
|
||||
it.setString(11, request.pacsId)
|
||||
it.setString(12, request.commissionTransactionNumber)
|
||||
it.setString(13, request.commissionAmount)
|
||||
it.setString(14, request.dccbCode)
|
||||
it.setString(15, request.branchCode)
|
||||
it.setString(16, request.remitterName)
|
||||
it.setString(17, transferQueueNumber)
|
||||
it.setString(18, request.pacsAccountNumber)
|
||||
it.setString(19, neftQueueNumber)
|
||||
}
|
||||
.use { it.executeUpdate() }
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
fun getTransactionRequests(): List<TransactionRequest> {
|
||||
|
||||
val transactionList: List<TransactionRequest>
|
||||
val dbUrl = getDatabaseUrl()
|
||||
val (dbUser, dbPassword) = getUserCredentials()
|
||||
|
||||
DriverManager.getConnection(dbUrl, dbUser, dbPassword).use { connection ->
|
||||
connection.prepareStatement(transactionRequestQuery).executeQuery().use {
|
||||
transactionList = mapToObject(it)
|
||||
}
|
||||
}
|
||||
|
||||
return transactionList
|
||||
}
|
||||
fun getTransactionRequest(transactionNumber: String): TransactionRequest? {
|
||||
val dbUrl = getDatabaseUrl()
|
||||
val (dbUser, dbPassword) = getUserCredentials()
|
||||
|
||||
return DriverManager.getConnection(dbUrl, dbUser, dbPassword).use { connection ->
|
||||
connection.prepareStatement(singleTransactionRequestQuery).apply {
|
||||
setString(1, transactionNumber)
|
||||
}.executeQuery().use {
|
||||
mapToObject(it).firstOrNull()
|
||||
return DriverManager
|
||||
.getConnection(dbUrl, dbUser, dbPassword)
|
||||
.use { connection ->
|
||||
connection
|
||||
.prepareStatement(singleTransactionRequestQuery)
|
||||
.apply { setString(1, transactionNumber) }
|
||||
.executeQuery()
|
||||
.use { mapToObject(it).firstOrNull() }
|
||||
}
|
||||
}
|
||||
}
|
||||
private fun getDatabaseUrl(): String {
|
||||
val prop = loadProp()
|
||||
|
||||
val dbHost = getProp(prop, "DB_HOST")
|
||||
val dbPort = getProp(prop, "DB_PORT")
|
||||
val dbName = getProp(prop, "DB_NAME")
|
||||
|
||||
return "jdbc:oracle:thin:@$dbHost:$dbPort:$dbName"
|
||||
}
|
||||
|
||||
private fun getUserCredentials(): Pair<String, String> {
|
||||
val prop = loadProp()
|
||||
|
||||
val dbUser = getProp(prop, "DB_USER")
|
||||
val dbPassword = getProp(prop, "DB_PASSWORD")
|
||||
|
||||
return Pair(dbUser, dbPassword)
|
||||
}
|
||||
|
||||
private fun loadProp(): Properties {
|
||||
|
||||
val props = javaClass.classLoader.getResourceAsStream("application.properties").use {
|
||||
Properties().apply { load(it) }
|
||||
}
|
||||
return props
|
||||
}
|
||||
|
||||
private fun getProp(prop: Properties, key: String): String {
|
||||
return prop.getProperty(key) ?: throw RuntimeException("property $prop not found")
|
||||
}
|
||||
|
||||
private fun mapToObject(rs: ResultSet): List<TransactionRequest> {
|
||||
val list = mutableListOf<TransactionRequest>()
|
||||
@@ -212,5 +140,4 @@ class TransactionDao {
|
||||
return list
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user