forked from maiora/backend-api
Merge pull request '0002357-endpoint-ricariche' (#7) from 0002357-endpoint-ricariche into dev
Reviewed-on: #7
This commit is contained in:
commit
3e0ae28708
@ -47,7 +47,7 @@ fun Application.module(configFile: Properties) {
|
||||
|
||||
fun loadConfig(): Properties {
|
||||
val properties = Properties()
|
||||
val inputStream = FileInputStream("/home/backend_api/config.properties")
|
||||
val inputStream = FileInputStream("/home/ristocloudadm/config.properties")
|
||||
properties.load(inputStream)
|
||||
return properties
|
||||
}
|
||||
|
@ -68,6 +68,14 @@ object ComposizioniTable : IdTable<Long>("view_composizioni"){
|
||||
val quantita = integer("quantita")
|
||||
}
|
||||
|
||||
object RicaricheTable : IdTable<Long>("ricariche_app"){
|
||||
override val id = long("id").autoIncrement("seq_ricariche_app").entityId()
|
||||
val codiceTransazione = varchar("codice_transazione", 255)
|
||||
val messaggio = varchar("messaggio", 255).nullable()
|
||||
val idTessera = long("id_tessera")
|
||||
val importo = double("importo")
|
||||
}
|
||||
|
||||
class AccountsDAO(id: EntityID<Int>) :IntEntity(id) {
|
||||
companion object : IntEntityClass<AccountsDAO>(AccountsTable)
|
||||
|
||||
@ -120,6 +128,15 @@ class ComposizioniDao(id: EntityID<Long>) :LongEntity(id){
|
||||
var quantita by ComposizioniTable.quantita
|
||||
}
|
||||
|
||||
class RicaricheDao(id: EntityID<Long>) :LongEntity(id){
|
||||
companion object : LongEntityClass<RicaricheDao>(RicaricheTable)
|
||||
|
||||
var codiceTransazione by RicaricheTable.codiceTransazione
|
||||
var messaggio by RicaricheTable.messaggio
|
||||
var idTessera by RicaricheTable.idTessera
|
||||
var importo by RicaricheTable.importo
|
||||
}
|
||||
|
||||
|
||||
fun accountsDaoToModel(dao: AccountsDAO) = Accounts(
|
||||
dao.id.value,
|
||||
@ -164,7 +181,7 @@ fun movimentiDaoToModel(dao: MovimentiDao) :Movimenti{
|
||||
)
|
||||
}
|
||||
|
||||
fun composizioniDaoToModel(dao: ComposizioniDao) =Composizioni(
|
||||
fun composizioniDaoToModel(dao: ComposizioniDao) = Composizioni(
|
||||
dao.id.value,
|
||||
dao.idVassoio,
|
||||
dao.vassoio,
|
||||
@ -174,8 +191,5 @@ fun composizioniDaoToModel(dao: ComposizioniDao) =Composizioni(
|
||||
)
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
suspend fun <T> suspendTransaction(block: Transaction.() -> T): T =
|
||||
newSuspendedTransaction(Dispatchers.IO, statement = block)
|
12
src/main/kotlin/eu/maiora/model/Ricariche.kt
Normal file
12
src/main/kotlin/eu/maiora/model/Ricariche.kt
Normal file
@ -0,0 +1,12 @@
|
||||
package eu.maiora.model
|
||||
|
||||
import kotlinx.serialization.Serializable
|
||||
|
||||
@Serializable
|
||||
data class Ricariche(
|
||||
val id : Long? = null,
|
||||
val codiceTransazione : String,
|
||||
val messaggio : String? = null,
|
||||
val idTessera : Long,
|
||||
val importo : Double
|
||||
)
|
5
src/main/kotlin/eu/maiora/model/RicaricheRepository.kt
Normal file
5
src/main/kotlin/eu/maiora/model/RicaricheRepository.kt
Normal file
@ -0,0 +1,5 @@
|
||||
package eu.maiora.model
|
||||
|
||||
interface RicaricheRepository {
|
||||
suspend fun insert(ricarica : Ricariche): Ricariche
|
||||
}
|
26
src/main/kotlin/eu/maiora/model/RicaricheRepositoryImpl.kt
Normal file
26
src/main/kotlin/eu/maiora/model/RicaricheRepositoryImpl.kt
Normal file
@ -0,0 +1,26 @@
|
||||
package eu.maiora.model
|
||||
|
||||
import eu.maiora.db.*
|
||||
import org.jetbrains.exposed.sql.insert
|
||||
import org.jetbrains.exposed.sql.insertAndGetId
|
||||
|
||||
class RicaricheRepositoryImpl : RicaricheRepository {
|
||||
override suspend fun insert(ricarica : Ricariche): Ricariche = suspendTransaction {
|
||||
// Inserisci una nuova ricarica
|
||||
// ID non definito: viene gestito dalla sequence
|
||||
val idRicaricaInserted = RicaricheTable.insertAndGetId {
|
||||
it[codiceTransazione] = ricarica.codiceTransazione
|
||||
it[messaggio] = ricarica.messaggio
|
||||
it[idTessera] = ricarica.idTessera
|
||||
it[importo] = ricarica.importo
|
||||
}.value
|
||||
|
||||
Ricariche(
|
||||
idRicaricaInserted,
|
||||
ricarica.codiceTransazione,
|
||||
ricarica.messaggio,
|
||||
ricarica.idTessera,
|
||||
ricarica.importo
|
||||
)
|
||||
}
|
||||
}
|
@ -1,11 +1,7 @@
|
||||
package eu.maiora.plugins
|
||||
|
||||
import eu.maiora.model.*
|
||||
import eu.maiora.routes.auth
|
||||
import eu.maiora.routes.composizioni
|
||||
import eu.maiora.routes.movimenti
|
||||
import eu.maiora.routes.tessere
|
||||
import eu.maiora.routes.valorePasti
|
||||
import eu.maiora.routes.*
|
||||
import io.ktor.server.application.*
|
||||
import io.ktor.server.response.*
|
||||
import io.ktor.server.routing.*
|
||||
@ -21,5 +17,6 @@ fun Application.configureRouting() {
|
||||
movimenti(MovimentiRepositoryImpl())
|
||||
composizioni(ComposizioniRepositoryImpl())
|
||||
valorePasti(ValorePastiRepositoryImpl())
|
||||
ricariche(RicaricheRepositoryImpl())
|
||||
}
|
||||
}
|
||||
|
43
src/main/kotlin/eu/maiora/routes/Ricariche.kt
Normal file
43
src/main/kotlin/eu/maiora/routes/Ricariche.kt
Normal file
@ -0,0 +1,43 @@
|
||||
package eu.maiora.routes
|
||||
|
||||
import eu.maiora.model.*
|
||||
import io.ktor.http.*
|
||||
import io.ktor.server.application.*
|
||||
import io.ktor.server.auth.*
|
||||
import io.ktor.server.request.*
|
||||
import io.ktor.server.response.*
|
||||
import io.ktor.server.routing.*
|
||||
|
||||
|
||||
fun Route.ricariche(ricaricheRepository: RicaricheRepository){
|
||||
route("/api/ricariche"){
|
||||
authenticate("auth-jwt") {
|
||||
post(){
|
||||
try{
|
||||
val ricaricaRequest = call.receive<Ricariche>()
|
||||
|
||||
//solo per il codiceTransazione (String) è necessario controllare se è vuoto
|
||||
if(ricaricaRequest.codiceTransazione.isBlank()){
|
||||
call.respond(
|
||||
HttpStatusCode.BadRequest,
|
||||
"Errore nel processare la richiesta: codiceTransazione vuoto"
|
||||
)
|
||||
}
|
||||
|
||||
// Inserisci la ricarica nel database
|
||||
val ricaricaInserita = ricaricheRepository.insert(ricaricaRequest)
|
||||
|
||||
// Rispondi con l'oggetto Ricariche, che include l'ID generato
|
||||
call.respond(HttpStatusCode.Created, ricaricaInserita)
|
||||
}
|
||||
catch (e: Exception){
|
||||
call.respond(
|
||||
HttpStatusCode.BadRequest,
|
||||
"Errore nel processare la richiesta: ${e.cause}"
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user