forked from maiora/backend-api
Merge pull request '0002393-endpoint-valorePasti' (#3) from 0002393-endpoint-valorePasti into dev
Reviewed-on: #3
This commit is contained in:
commit
dfa518383a
12
src/main/kotlin/eu/maiora/model/ValorePasti.kt
Normal file
12
src/main/kotlin/eu/maiora/model/ValorePasti.kt
Normal file
@ -0,0 +1,12 @@
|
||||
package eu.maiora.model
|
||||
|
||||
import kotlinx.serialization.Serializable
|
||||
|
||||
@Serializable
|
||||
data class ValorePasti(
|
||||
val idTessera : Long,
|
||||
val idVassoio : Long,
|
||||
val data : String,
|
||||
val prezzo : Double,
|
||||
val punti : Int
|
||||
)
|
5
src/main/kotlin/eu/maiora/model/ValorePastiRepository.kt
Normal file
5
src/main/kotlin/eu/maiora/model/ValorePastiRepository.kt
Normal file
@ -0,0 +1,5 @@
|
||||
package eu.maiora.model
|
||||
|
||||
interface ValorePastiRepository {
|
||||
suspend fun valorePastoByTessVassData(idTessera : String, idVassoio : String, data : String): String
|
||||
}
|
31
src/main/kotlin/eu/maiora/model/ValorePastiRepositoryImpl.kt
Normal file
31
src/main/kotlin/eu/maiora/model/ValorePastiRepositoryImpl.kt
Normal file
@ -0,0 +1,31 @@
|
||||
package eu.maiora.model
|
||||
|
||||
import eu.maiora.db.*
|
||||
import org.jetbrains.exposed.sql.LongColumnType
|
||||
import org.jetbrains.exposed.sql.SqlExpressionBuilder
|
||||
import org.jetbrains.exposed.sql.VarCharColumnType
|
||||
|
||||
class ValorePastiRepositoryImpl : ValorePastiRepository {
|
||||
override suspend fun valorePastoByTessVassData(idTessera : String, idVassoio : String, data : String): String = suspendTransaction {
|
||||
// Cerca valore del pasto e punti in base alla tessera, al vassoio e al giorno
|
||||
|
||||
val result = exec("SELECT SIR.trova_tariffa(?, ?, ?) FROM dual",
|
||||
listOf(
|
||||
Pair(LongColumnType(), idTessera),
|
||||
Pair(LongColumnType(), idVassoio),
|
||||
Pair(VarCharColumnType(), data)
|
||||
)){ rs ->
|
||||
var resultString: String? = null
|
||||
// Processiamo il ResultSet restituito dalla query
|
||||
if (rs.next()) {
|
||||
resultString = rs.getString(1) // Leggiamo il primo risultato
|
||||
}
|
||||
resultString
|
||||
}
|
||||
|
||||
|
||||
result ?: "Nessun risultato"
|
||||
|
||||
|
||||
}
|
||||
}
|
@ -1,12 +1,10 @@
|
||||
package eu.maiora.plugins
|
||||
|
||||
import eu.maiora.model.AccountsRepositoryImpl
|
||||
import eu.maiora.model.MovimentiRepositoryImpl
|
||||
import eu.maiora.model.ParametriRepositoryImpl
|
||||
import eu.maiora.model.TessereRepositoryImpl
|
||||
import eu.maiora.model.*
|
||||
import eu.maiora.routes.auth
|
||||
import eu.maiora.routes.movimenti
|
||||
import eu.maiora.routes.tessere
|
||||
import eu.maiora.routes.valorePasti
|
||||
import io.ktor.server.application.*
|
||||
import io.ktor.server.response.*
|
||||
import io.ktor.server.routing.*
|
||||
@ -20,5 +18,6 @@ fun Application.configureRouting() {
|
||||
auth(AccountsRepositoryImpl())
|
||||
tessere(TessereRepositoryImpl())
|
||||
movimenti(MovimentiRepositoryImpl())
|
||||
valorePasti(ValorePastiRepositoryImpl())
|
||||
}
|
||||
}
|
||||
|
50
src/main/kotlin/eu/maiora/routes/ValorePasti.kt
Normal file
50
src/main/kotlin/eu/maiora/routes/ValorePasti.kt
Normal file
@ -0,0 +1,50 @@
|
||||
package eu.maiora.routes
|
||||
|
||||
import eu.maiora.model.TessereRepositoryImpl
|
||||
import eu.maiora.model.ValorePasti
|
||||
import eu.maiora.model.ValorePastiRepository
|
||||
import io.ktor.http.*
|
||||
import io.ktor.server.application.*
|
||||
import io.ktor.server.auth.*
|
||||
import io.ktor.server.response.*
|
||||
import io.ktor.server.routing.*
|
||||
|
||||
|
||||
fun Route.valorePasti(valorePastiRepository: ValorePastiRepository){
|
||||
route("/api/valorePasti"){
|
||||
authenticate("auth-jwt") {
|
||||
get(){
|
||||
// Ottieni i parametri dal percorso
|
||||
val idTessera = call.parameters["idTessera"]
|
||||
val idVassoio = call.parameters["idVassoio"]
|
||||
val data = call.parameters["data"]
|
||||
|
||||
if (idTessera == null) {
|
||||
call.respondText("ID tessera non valido", status = HttpStatusCode.BadRequest)
|
||||
return@get
|
||||
}
|
||||
|
||||
if (idVassoio == null) {
|
||||
call.respondText("ID vassoio non valido", status = HttpStatusCode.BadRequest)
|
||||
return@get
|
||||
}
|
||||
|
||||
if (data == null) {
|
||||
call.respondText("data non valida", status = HttpStatusCode.BadRequest)
|
||||
return@get
|
||||
}
|
||||
|
||||
// Cerca la tessera per codice fiscale
|
||||
val valorePasto = valorePastiRepository.valorePastoByTessVassData(idTessera, idVassoio, data)
|
||||
|
||||
val prezzo = valorePasto.split("#").get(0)
|
||||
val punti = valorePasto.split("#").get(1)
|
||||
call.respond( ValorePasti(idTessera.toLong(),
|
||||
idVassoio.toLong(), data,
|
||||
prezzo.replace(',', '.').toDouble(),
|
||||
punti.toInt()))
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user