Compare commits
25 Commits
main
...
0002439-en
Author | SHA1 | Date | |
---|---|---|---|
10d2fefa24 | |||
1adb9c5f0e | |||
5c169dcfdd | |||
3e0ae28708 | |||
529087dd98 | |||
025f45b972 | |||
8b4c9138ac | |||
e0e93f93d0 | |||
a633d1aac6 | |||
3585ec9ad6 | |||
5ae17aa8a8 | |||
dfa518383a | |||
3f8ecb0370 | |||
71443ff6f3 | |||
57597c3d94 | |||
28a9ec86af | |||
ea4edcdcee | |||
311d1fbd3b | |||
dc29e2c6b1 | |||
e0d64f91d1 | |||
af2b7cea6d | |||
488cab4ac7 | |||
8e417f02f2 | |||
728eca6dd6 | |||
e3fc1f73b7 |
@ -1,5 +1,5 @@
|
|||||||
plugins {
|
plugins {
|
||||||
id("org.gradle.toolchains.foojay-resolver-convention") version "0.5.0"
|
id("org.gradle.toolchains.foojay-resolver-convention") version "0.5.0"
|
||||||
}
|
}
|
||||||
rootProject.name = "Backend_API"
|
rootProject.name = "Backend_API_DSU"
|
||||||
|
|
||||||
|
@ -47,7 +47,7 @@ fun Application.module(configFile: Properties) {
|
|||||||
|
|
||||||
fun loadConfig(): Properties {
|
fun loadConfig(): Properties {
|
||||||
val properties = Properties()
|
val properties = Properties()
|
||||||
val inputStream = FileInputStream("/home/backend_api/config.properties")
|
val inputStream = FileInputStream("/home/ristocloudadm/config.properties")
|
||||||
properties.load(inputStream)
|
properties.load(inputStream)
|
||||||
return properties
|
return properties
|
||||||
}
|
}
|
||||||
|
@ -1,15 +1,20 @@
|
|||||||
package eu.maiora.db
|
package eu.maiora.db
|
||||||
|
|
||||||
import com.fasterxml.jackson.databind.deser.impl.CreatorCandidate.Param
|
import eu.maiora.model.*
|
||||||
import eu.maiora.model.Accounts
|
|
||||||
import eu.maiora.model.Parametri
|
|
||||||
import kotlinx.coroutines.Dispatchers
|
import kotlinx.coroutines.Dispatchers
|
||||||
import org.jetbrains.exposed.dao.IntEntity
|
import org.jetbrains.exposed.dao.IntEntity
|
||||||
import org.jetbrains.exposed.dao.IntEntityClass
|
import org.jetbrains.exposed.dao.IntEntityClass
|
||||||
|
import org.jetbrains.exposed.dao.LongEntity
|
||||||
|
import org.jetbrains.exposed.dao.LongEntityClass
|
||||||
import org.jetbrains.exposed.dao.id.EntityID
|
import org.jetbrains.exposed.dao.id.EntityID
|
||||||
import org.jetbrains.exposed.dao.id.IdTable
|
import org.jetbrains.exposed.dao.id.IdTable
|
||||||
import org.jetbrains.exposed.sql.Transaction
|
import org.jetbrains.exposed.sql.Transaction
|
||||||
|
import org.jetbrains.exposed.sql.javatime.date
|
||||||
|
import org.jetbrains.exposed.sql.javatime.datetime
|
||||||
import org.jetbrains.exposed.sql.transactions.experimental.newSuspendedTransaction
|
import org.jetbrains.exposed.sql.transactions.experimental.newSuspendedTransaction
|
||||||
|
import java.time.format.DateTimeFormatter
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
object AccountsTable : IdTable<Int>("accounts"){
|
object AccountsTable : IdTable<Int>("accounts"){
|
||||||
override val id = integer("id").entityId()
|
override val id = integer("id").entityId()
|
||||||
@ -27,6 +32,68 @@ object ParametriTable : IdTable<Int>("parametri"){
|
|||||||
override val primaryKey = PrimaryKey(id)
|
override val primaryKey = PrimaryKey(id)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
object TessereTable : IdTable<Long>("view_tessere_api"){
|
||||||
|
override val id = long("id").entityId()
|
||||||
|
val idUtente = long("id_utente")
|
||||||
|
val codiceFiscale = varchar("codice_fiscale", 255)
|
||||||
|
val numero = varchar("numero", 255)
|
||||||
|
val saldo = double("saldo")
|
||||||
|
val punti = integer("punti")
|
||||||
|
|
||||||
|
override val primaryKey = PrimaryKey(id)
|
||||||
|
}
|
||||||
|
|
||||||
|
object MovimentiTable : IdTable<Long>("view_movimenti_api"){
|
||||||
|
override val id = long("id").entityId()
|
||||||
|
val idTessera = long("id_tessera")
|
||||||
|
val numero = varchar("numero_tessera", 255)
|
||||||
|
val operazione = varchar("operazione", 255)
|
||||||
|
val dataMovimento = datetime("data_movimento")
|
||||||
|
val transazione = varchar("transazione", 255)
|
||||||
|
val dispositivo = varchar("dispositivo", 255)
|
||||||
|
val riferimento= varchar("riferimento", 255)
|
||||||
|
val saldoPre = double("saldo_pre")
|
||||||
|
val importo = double("importo")
|
||||||
|
val saldoPost = double("saldo_post")
|
||||||
|
val puntiPre = integer("punti_pre")
|
||||||
|
val punti = integer("punti")
|
||||||
|
val puntiPost = integer("punti_post")
|
||||||
|
}
|
||||||
|
|
||||||
|
object ComposizioniTable : IdTable<Long>("view_composizioni"){
|
||||||
|
override val id = long("id").entityId()
|
||||||
|
val idVassoio = long("id_vassoio")
|
||||||
|
val vassoio = varchar("vassoio", 255)
|
||||||
|
val idCategoria = long("id_categoria")
|
||||||
|
val categoria = varchar("categoria", 255)
|
||||||
|
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")
|
||||||
|
}
|
||||||
|
|
||||||
|
object SlotPrenotabiliTable : IdTable<Long>("view_slot_prenotabili"){
|
||||||
|
override val id = long("id").entityId()
|
||||||
|
val giorno = date("giorno")
|
||||||
|
val dataInizio = datetime("data_inizio")
|
||||||
|
val dataFine = datetime("data_fine")
|
||||||
|
val idModalita = long("id_modalita")
|
||||||
|
val modalitaPrenotazione = varchar("modalita_prenotazione", 255)
|
||||||
|
val idPuntoDistribuzione = long("id_punto_distribuzione")
|
||||||
|
val puntoDistribuzione = varchar("punto_distribuzione", 255)
|
||||||
|
val idPuntoCassa = long("id_punto_cassa")
|
||||||
|
val puntoCassa = varchar("punto_cassa", 255)
|
||||||
|
val idTurno = long("id_turno")
|
||||||
|
val turno = varchar("turno", 255)
|
||||||
|
val idResidenza = long("id_residenza").nullable()
|
||||||
|
val residenza = varchar("residenza", 255).nullable()
|
||||||
|
}
|
||||||
|
|
||||||
class AccountsDAO(id: EntityID<Int>) :IntEntity(id) {
|
class AccountsDAO(id: EntityID<Int>) :IntEntity(id) {
|
||||||
companion object : IntEntityClass<AccountsDAO>(AccountsTable)
|
companion object : IntEntityClass<AccountsDAO>(AccountsTable)
|
||||||
|
|
||||||
@ -41,6 +108,70 @@ class ParametriDAO(id: EntityID<Int>) :IntEntity(id) {
|
|||||||
var valore by ParametriTable.valore
|
var valore by ParametriTable.valore
|
||||||
}
|
}
|
||||||
|
|
||||||
|
class TessereDao(id: EntityID<Long>) :LongEntity(id) {
|
||||||
|
companion object : LongEntityClass<TessereDao>(TessereTable)
|
||||||
|
|
||||||
|
var idUtente by TessereTable.idUtente
|
||||||
|
var codiceFiscale by TessereTable.codiceFiscale
|
||||||
|
var numero by TessereTable.numero
|
||||||
|
var saldo by TessereTable.saldo
|
||||||
|
var punti by TessereTable.punti
|
||||||
|
}
|
||||||
|
|
||||||
|
class MovimentiDao(id: EntityID<Long>) :LongEntity(id) {
|
||||||
|
companion object : LongEntityClass<MovimentiDao>(MovimentiTable)
|
||||||
|
|
||||||
|
var idTessera by MovimentiTable.idTessera
|
||||||
|
var numero by MovimentiTable.numero
|
||||||
|
var operazione by MovimentiTable.operazione
|
||||||
|
var dataMovimento by MovimentiTable.dataMovimento
|
||||||
|
var transazione by MovimentiTable.transazione
|
||||||
|
var dispositivo by MovimentiTable.dispositivo
|
||||||
|
var riferimento by MovimentiTable.riferimento
|
||||||
|
var saldoPre by MovimentiTable.saldoPre
|
||||||
|
var importo by MovimentiTable.importo
|
||||||
|
var saldoPost by MovimentiTable.saldoPost
|
||||||
|
var puntiPre by MovimentiTable.puntiPre
|
||||||
|
var punti by MovimentiTable.punti
|
||||||
|
var puntiPost by MovimentiTable.puntiPost
|
||||||
|
}
|
||||||
|
|
||||||
|
class ComposizioniDao(id: EntityID<Long>) :LongEntity(id){
|
||||||
|
companion object : LongEntityClass<ComposizioniDao>(ComposizioniTable)
|
||||||
|
|
||||||
|
var idVassoio by ComposizioniTable.idVassoio
|
||||||
|
var vassoio by ComposizioniTable.vassoio
|
||||||
|
var idCategoria by ComposizioniTable.idCategoria
|
||||||
|
var categoria by ComposizioniTable.categoria
|
||||||
|
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
|
||||||
|
}
|
||||||
|
|
||||||
|
class SlotPrenotabiliDao(id: EntityID<Long>) :LongEntity(id) {
|
||||||
|
companion object : LongEntityClass<SlotPrenotabiliDao>(SlotPrenotabiliTable)
|
||||||
|
|
||||||
|
var giorno by SlotPrenotabiliTable.giorno
|
||||||
|
var dataInizio by SlotPrenotabiliTable.dataInizio
|
||||||
|
var dataFine by SlotPrenotabiliTable.dataFine
|
||||||
|
var idModalita by SlotPrenotabiliTable.idModalita
|
||||||
|
var modalitaPrenotazione by SlotPrenotabiliTable.modalitaPrenotazione
|
||||||
|
var idPuntoDistribuzione by SlotPrenotabiliTable.idPuntoDistribuzione
|
||||||
|
var puntoDistribuzione by SlotPrenotabiliTable.puntoDistribuzione
|
||||||
|
var idPuntoCassa by SlotPrenotabiliTable.idPuntoCassa
|
||||||
|
var puntoCassa by SlotPrenotabiliTable.puntoCassa
|
||||||
|
var idTurno by SlotPrenotabiliTable.idTurno
|
||||||
|
var turno by SlotPrenotabiliTable.turno
|
||||||
|
var idResidenza by SlotPrenotabiliTable.idResidenza
|
||||||
|
var residenza by SlotPrenotabiliTable.residenza
|
||||||
|
}
|
||||||
|
|
||||||
fun accountsDaoToModel(dao: AccountsDAO) = Accounts(
|
fun accountsDaoToModel(dao: AccountsDAO) = Accounts(
|
||||||
dao.id.value,
|
dao.id.value,
|
||||||
@ -54,6 +185,83 @@ fun parametriDaoToModel(dao: ParametriDAO) = Parametri(
|
|||||||
dao.valore
|
dao.valore
|
||||||
)
|
)
|
||||||
|
|
||||||
|
fun tessereDaoToModel(dao: TessereDao) = Tessere(
|
||||||
|
dao.id.value,
|
||||||
|
dao.idUtente,
|
||||||
|
dao.codiceFiscale,
|
||||||
|
dao.numero,
|
||||||
|
dao.saldo,
|
||||||
|
dao.punti
|
||||||
|
)
|
||||||
|
|
||||||
|
fun movimentiDaoToModel(dao: MovimentiDao) :Movimenti{
|
||||||
|
val formatter = DateTimeFormatter.ofPattern("ddMMyyyy HH:mm")
|
||||||
|
val formattedDate = dao.dataMovimento.format(formatter)
|
||||||
|
|
||||||
|
return Movimenti(
|
||||||
|
dao.id.value,
|
||||||
|
dao.idTessera,
|
||||||
|
dao.numero,
|
||||||
|
dao.operazione,
|
||||||
|
formattedDate,
|
||||||
|
dao.transazione,
|
||||||
|
dao.dispositivo,
|
||||||
|
dao.riferimento,
|
||||||
|
dao.saldoPre,
|
||||||
|
dao.importo,
|
||||||
|
dao.saldoPost,
|
||||||
|
dao.puntiPre,
|
||||||
|
dao.punti,
|
||||||
|
dao.puntiPost
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
fun composizioniDaoToModel(dao: ComposizioniDao) = Composizioni(
|
||||||
|
dao.id.value,
|
||||||
|
dao.idVassoio,
|
||||||
|
dao.vassoio,
|
||||||
|
dao.idCategoria,
|
||||||
|
dao.categoria,
|
||||||
|
dao.quantita
|
||||||
|
)
|
||||||
|
|
||||||
|
fun puntiDistribuzioneDaoToModel(dao: SlotPrenotabiliDao) :PuntiDistribuzione{
|
||||||
|
return PuntiDistribuzione(
|
||||||
|
dao.id.value,
|
||||||
|
dao.idPuntoDistribuzione,
|
||||||
|
dao.puntoDistribuzione,
|
||||||
|
dao.idPuntoCassa,
|
||||||
|
dao.puntoCassa,
|
||||||
|
dao.idModalita,
|
||||||
|
dao.modalitaPrenotazione
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
fun slotOrariDaoToModel(dao: SlotPrenotabiliDao) :SlotOrari{
|
||||||
|
val formatterGiorno = DateTimeFormatter.ofPattern("ddMMyyyy")
|
||||||
|
val formatterConOra = DateTimeFormatter.ofPattern("ddMMyyyy HH:mm")
|
||||||
|
val formattedGiorno = dao.giorno.format(formatterGiorno)
|
||||||
|
val formattedDataInizio = dao.dataInizio.format(formatterConOra)
|
||||||
|
val formattedDataFine = dao.dataFine.format(formatterConOra)
|
||||||
|
|
||||||
|
return SlotOrari(
|
||||||
|
dao.id.value,
|
||||||
|
formattedGiorno,
|
||||||
|
formattedDataInizio,
|
||||||
|
formattedDataFine,
|
||||||
|
dao.idPuntoDistribuzione,
|
||||||
|
dao.puntoDistribuzione,
|
||||||
|
dao.idPuntoCassa,
|
||||||
|
dao.puntoCassa,
|
||||||
|
dao.idModalita,
|
||||||
|
dao.modalitaPrenotazione,
|
||||||
|
dao.idTurno,
|
||||||
|
dao.turno,
|
||||||
|
dao.idResidenza,
|
||||||
|
dao.residenza
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
suspend fun <T> suspendTransaction(block: Transaction.() -> T): T =
|
suspend fun <T> suspendTransaction(block: Transaction.() -> T): T =
|
||||||
newSuspendedTransaction(Dispatchers.IO, statement = block)
|
newSuspendedTransaction(Dispatchers.IO, statement = block)
|
13
src/main/kotlin/eu/maiora/model/Composizioni.kt
Normal file
13
src/main/kotlin/eu/maiora/model/Composizioni.kt
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
package eu.maiora.model
|
||||||
|
|
||||||
|
import kotlinx.serialization.Serializable
|
||||||
|
|
||||||
|
@Serializable
|
||||||
|
data class Composizioni(
|
||||||
|
val id: Long,
|
||||||
|
val idVassoio : Long,
|
||||||
|
val vassoio : String,
|
||||||
|
val idCategoria : Long,
|
||||||
|
val categoria : String,
|
||||||
|
val quantita : Int
|
||||||
|
)
|
@ -0,0 +1,5 @@
|
|||||||
|
package eu.maiora.model
|
||||||
|
|
||||||
|
interface ComposizioniRepository {
|
||||||
|
suspend fun listaComposizioni(): List<Composizioni>
|
||||||
|
}
|
@ -0,0 +1,14 @@
|
|||||||
|
package eu.maiora.model
|
||||||
|
|
||||||
|
import eu.maiora.db.*
|
||||||
|
import org.jetbrains.exposed.sql.SortOrder
|
||||||
|
|
||||||
|
class ComposizioniRepositoryImpl : ComposizioniRepository {
|
||||||
|
override suspend fun listaComposizioni(): List<Composizioni> = suspendTransaction {
|
||||||
|
// Cerca la lista di composizioni
|
||||||
|
ComposizioniDao.all()
|
||||||
|
.toList()
|
||||||
|
.map { composizioniDaoToModel(it) } // Converte il DAO in un oggetto Composizioni
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
22
src/main/kotlin/eu/maiora/model/Movimenti.kt
Normal file
22
src/main/kotlin/eu/maiora/model/Movimenti.kt
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
package eu.maiora.model
|
||||||
|
|
||||||
|
import kotlinx.serialization.Serializable
|
||||||
|
|
||||||
|
|
||||||
|
@Serializable
|
||||||
|
data class Movimenti(
|
||||||
|
val id: Long,
|
||||||
|
val idTessera: Long,
|
||||||
|
val numero: String,
|
||||||
|
val operazione: String,
|
||||||
|
val dataMovimento: String,
|
||||||
|
val transazione: String,
|
||||||
|
val dispositivo: String,
|
||||||
|
val riferimento: String,
|
||||||
|
val saldoPre: Double,
|
||||||
|
val importo: Double,
|
||||||
|
val saldoPost: Double,
|
||||||
|
val puntiPre: Int,
|
||||||
|
val punti: Int,
|
||||||
|
val puntiPost: Int
|
||||||
|
)
|
5
src/main/kotlin/eu/maiora/model/MovimentiRepository.kt
Normal file
5
src/main/kotlin/eu/maiora/model/MovimentiRepository.kt
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
package eu.maiora.model
|
||||||
|
|
||||||
|
interface MovimentiRepository {
|
||||||
|
suspend fun movimentiByIdTessera(idTessera : Long): List<Movimenti>?
|
||||||
|
}
|
15
src/main/kotlin/eu/maiora/model/MovimentiRepositoryImpl.kt
Normal file
15
src/main/kotlin/eu/maiora/model/MovimentiRepositoryImpl.kt
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
package eu.maiora.model
|
||||||
|
|
||||||
|
import eu.maiora.db.*
|
||||||
|
import org.jetbrains.exposed.sql.SortOrder
|
||||||
|
|
||||||
|
class MovimentiRepositoryImpl : MovimentiRepository {
|
||||||
|
override suspend fun movimentiByIdTessera(idTessera : Long): List<Movimenti> = suspendTransaction {
|
||||||
|
// Cerca la lista di movimenti
|
||||||
|
MovimentiDao.find { MovimentiTable.idTessera eq idTessera }
|
||||||
|
.orderBy(MovimentiTable.dataMovimento to SortOrder.DESC)
|
||||||
|
.toList() // Restituisce la lista dei movimenti
|
||||||
|
.map { movimentiDaoToModel(it) } // Converte il DAO in un oggetto Movimenti
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
14
src/main/kotlin/eu/maiora/model/PuntiDistribuzione.kt
Normal file
14
src/main/kotlin/eu/maiora/model/PuntiDistribuzione.kt
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
package eu.maiora.model
|
||||||
|
|
||||||
|
import kotlinx.serialization.Serializable
|
||||||
|
|
||||||
|
@Serializable
|
||||||
|
data class PuntiDistribuzione(
|
||||||
|
val id: Long,
|
||||||
|
val idPuntoDistribuzione : Long,
|
||||||
|
val puntoDistribuzione : String,
|
||||||
|
val idPuntoCassa : Long,
|
||||||
|
val puntoCassa : String,
|
||||||
|
val idModalita : Long,
|
||||||
|
val modalitaPrenotazione : String
|
||||||
|
)
|
@ -0,0 +1,5 @@
|
|||||||
|
package eu.maiora.model
|
||||||
|
|
||||||
|
interface PuntiDistribuzioneRepository {
|
||||||
|
suspend fun puntiDistByGiornoIdTurno(giorno : String, idTurno : Long): List<PuntiDistribuzione>?
|
||||||
|
}
|
@ -0,0 +1,21 @@
|
|||||||
|
package eu.maiora.model
|
||||||
|
|
||||||
|
import eu.maiora.db.*
|
||||||
|
import org.jetbrains.exposed.sql.SortOrder
|
||||||
|
import org.jetbrains.exposed.sql.and
|
||||||
|
import java.time.LocalDate
|
||||||
|
import java.time.LocalDateTime
|
||||||
|
import java.time.format.DateTimeFormatter
|
||||||
|
|
||||||
|
class PuntiDistribuzioneRepositoryImpl : PuntiDistribuzioneRepository {
|
||||||
|
override suspend fun puntiDistByGiornoIdTurno(giorno : String, idTurno : Long): List<PuntiDistribuzione> = suspendTransaction {
|
||||||
|
// Cerca la lista di punti distribuzione dalla tabella degli slot prenotabili
|
||||||
|
val formatter = DateTimeFormatter.ofPattern("ddMMyyyy")
|
||||||
|
val formattedDate = LocalDate.parse(giorno, formatter)
|
||||||
|
|
||||||
|
SlotPrenotabiliDao.find { (SlotPrenotabiliTable.giorno eq formattedDate) and (SlotPrenotabiliTable.idTurno eq idTurno)}
|
||||||
|
.toList() // Restituisce la lista degli slot prenotabili da cui ricavare i punti distribuzione
|
||||||
|
.map { puntiDistribuzioneDaoToModel(it) } // Converte il DAO in un oggetto PuntiDistribuzione
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
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
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
21
src/main/kotlin/eu/maiora/model/SlotOrari.kt
Normal file
21
src/main/kotlin/eu/maiora/model/SlotOrari.kt
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
package eu.maiora.model
|
||||||
|
|
||||||
|
import kotlinx.serialization.Serializable
|
||||||
|
|
||||||
|
@Serializable
|
||||||
|
data class SlotOrari(
|
||||||
|
val id: Long,
|
||||||
|
val giorno : String,
|
||||||
|
val dataInizio : String,
|
||||||
|
val dataFine : String,
|
||||||
|
val idPuntoDistribuzione : Long,
|
||||||
|
val puntoDistribuzione : String,
|
||||||
|
val idPuntoCassa : Long,
|
||||||
|
val puntoCassa : String,
|
||||||
|
val idModalita : Long,
|
||||||
|
val modalitaPrenotazione : String,
|
||||||
|
val idTurno : Long,
|
||||||
|
val turno : String,
|
||||||
|
val idResidenza : Long? = null,
|
||||||
|
val residenza : String? = null
|
||||||
|
)
|
8
src/main/kotlin/eu/maiora/model/SlotOrariRepository.kt
Normal file
8
src/main/kotlin/eu/maiora/model/SlotOrariRepository.kt
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
package eu.maiora.model
|
||||||
|
|
||||||
|
interface SlotOrariRepository {
|
||||||
|
suspend fun slotOrariByGiornoIdTurnoIdPuntoDistIdMod(giorno : String,
|
||||||
|
idTurno : Long,
|
||||||
|
idPuntoDistribuzione : Long,
|
||||||
|
idModalita : Long): List<SlotOrari>?
|
||||||
|
}
|
25
src/main/kotlin/eu/maiora/model/SlotOrariRepositoryImpl.kt
Normal file
25
src/main/kotlin/eu/maiora/model/SlotOrariRepositoryImpl.kt
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
package eu.maiora.model
|
||||||
|
|
||||||
|
import eu.maiora.db.*
|
||||||
|
import org.jetbrains.exposed.sql.and
|
||||||
|
import java.time.LocalDate
|
||||||
|
import java.time.format.DateTimeFormatter
|
||||||
|
|
||||||
|
class SlotOrariRepositoryImpl : SlotOrariRepository {
|
||||||
|
override suspend fun slotOrariByGiornoIdTurnoIdPuntoDistIdMod(giorno : String,
|
||||||
|
idTurno : Long,
|
||||||
|
idPuntoDistribuzione : Long,
|
||||||
|
idModalita : Long): List<SlotOrari> = suspendTransaction {
|
||||||
|
// Cerca la lista di slot orari
|
||||||
|
val formatter = DateTimeFormatter.ofPattern("ddMMyyyy")
|
||||||
|
val formattedDate = LocalDate.parse(giorno, formatter)
|
||||||
|
|
||||||
|
SlotPrenotabiliDao.find { (SlotPrenotabiliTable.giorno eq formattedDate) and
|
||||||
|
(SlotPrenotabiliTable.idTurno eq idTurno) and
|
||||||
|
(SlotPrenotabiliTable.idPuntoDistribuzione eq idPuntoDistribuzione) and
|
||||||
|
(SlotPrenotabiliTable.idModalita eq idModalita)}
|
||||||
|
.toList() // Restituisce la lista degli slot prenotabili da cui ricavare i punti distribuzione
|
||||||
|
.map { slotOrariDaoToModel(it) } // Converte il DAO in un oggetto SlotOrari
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
13
src/main/kotlin/eu/maiora/model/Tessere.kt
Normal file
13
src/main/kotlin/eu/maiora/model/Tessere.kt
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
package eu.maiora.model
|
||||||
|
|
||||||
|
import kotlinx.serialization.Serializable
|
||||||
|
|
||||||
|
@Serializable
|
||||||
|
data class Tessere(
|
||||||
|
val id: Long,
|
||||||
|
val idUtente : Long,
|
||||||
|
val codiceFiscale : String,
|
||||||
|
val numero : String,
|
||||||
|
val saldo : Double,
|
||||||
|
val punti : Int
|
||||||
|
)
|
5
src/main/kotlin/eu/maiora/model/TessereRepository.kt
Normal file
5
src/main/kotlin/eu/maiora/model/TessereRepository.kt
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
package eu.maiora.model
|
||||||
|
|
||||||
|
interface TessereRepository {
|
||||||
|
suspend fun tesseraByCodiceFiscale(cf : String): Tessere?
|
||||||
|
}
|
13
src/main/kotlin/eu/maiora/model/TessereRepositoryImpl.kt
Normal file
13
src/main/kotlin/eu/maiora/model/TessereRepositoryImpl.kt
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
package eu.maiora.model
|
||||||
|
|
||||||
|
import eu.maiora.db.*
|
||||||
|
|
||||||
|
class TessereRepositoryImpl : TessereRepository {
|
||||||
|
override suspend fun tesseraByCodiceFiscale(cf: String): Tessere? = suspendTransaction {
|
||||||
|
// Cerca tessere in base al codice fiscale
|
||||||
|
TessereDao.find { TessereTable.codiceFiscale eq cf }
|
||||||
|
.singleOrNull() // Restituisce un singolo risultato o null se non trovato
|
||||||
|
?.let { tessereDaoToModel(it) } // Converte il DAO in un oggetto Tessere
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
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,7 +1,7 @@
|
|||||||
package eu.maiora.plugins
|
package eu.maiora.plugins
|
||||||
|
|
||||||
import eu.maiora.model.AccountsRepositoryImpl
|
import eu.maiora.model.*
|
||||||
import eu.maiora.routes.auth
|
import eu.maiora.routes.*
|
||||||
import io.ktor.server.application.*
|
import io.ktor.server.application.*
|
||||||
import io.ktor.server.response.*
|
import io.ktor.server.response.*
|
||||||
import io.ktor.server.routing.*
|
import io.ktor.server.routing.*
|
||||||
@ -13,5 +13,12 @@ fun Application.configureRouting() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
auth(AccountsRepositoryImpl())
|
auth(AccountsRepositoryImpl())
|
||||||
|
tessere(TessereRepositoryImpl())
|
||||||
|
movimenti(MovimentiRepositoryImpl())
|
||||||
|
composizioni(ComposizioniRepositoryImpl())
|
||||||
|
valorePasti(ValorePastiRepositoryImpl())
|
||||||
|
ricariche(RicaricheRepositoryImpl())
|
||||||
|
puntiDistribuzione(PuntiDistribuzioneRepositoryImpl())
|
||||||
|
slotOrari(SlotOrariRepositoryImpl())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
20
src/main/kotlin/eu/maiora/routes/Composizioni.kt
Normal file
20
src/main/kotlin/eu/maiora/routes/Composizioni.kt
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
package eu.maiora.routes
|
||||||
|
|
||||||
|
import eu.maiora.model.ComposizioniRepositoryImpl
|
||||||
|
import io.ktor.server.application.*
|
||||||
|
import io.ktor.server.auth.*
|
||||||
|
import io.ktor.server.response.*
|
||||||
|
import io.ktor.server.routing.*
|
||||||
|
|
||||||
|
|
||||||
|
fun Route.composizioni(composizioniRepository: ComposizioniRepositoryImpl){
|
||||||
|
route("/api/composizioni"){
|
||||||
|
authenticate("auth-jwt") {
|
||||||
|
get(){
|
||||||
|
val listaComposizioni = composizioniRepository.listaComposizioni()
|
||||||
|
call.respond(listaComposizioni)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
36
src/main/kotlin/eu/maiora/routes/Movimenti.kt
Normal file
36
src/main/kotlin/eu/maiora/routes/Movimenti.kt
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
package eu.maiora.routes
|
||||||
|
|
||||||
|
import eu.maiora.model.MovimentiRepositoryImpl
|
||||||
|
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.movimenti(movimentiRepository: MovimentiRepositoryImpl){
|
||||||
|
route("/api/movimenti"){
|
||||||
|
authenticate("auth-jwt") {
|
||||||
|
get("{idTessera}"){
|
||||||
|
// Ottieni l'id della tessera dal percorso
|
||||||
|
val idTessera = call.parameters["idTessera"]
|
||||||
|
|
||||||
|
if (idTessera == null) {
|
||||||
|
call.respondText("ID tessera non valido", status = HttpStatusCode.BadRequest)
|
||||||
|
return@get
|
||||||
|
}
|
||||||
|
|
||||||
|
// Cerca la tessera per codice fiscale
|
||||||
|
val listaMovimenti = movimentiRepository.movimentiByIdTessera(idTessera.toLong())
|
||||||
|
|
||||||
|
|
||||||
|
if (listaMovimenti != null) {
|
||||||
|
call.respond(listaMovimenti)
|
||||||
|
} else {
|
||||||
|
call.respondText("Movimenti non trovati", status = HttpStatusCode.NotFound)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
41
src/main/kotlin/eu/maiora/routes/PuntiDistribuzione.kt
Normal file
41
src/main/kotlin/eu/maiora/routes/PuntiDistribuzione.kt
Normal file
@ -0,0 +1,41 @@
|
|||||||
|
package eu.maiora.routes
|
||||||
|
|
||||||
|
import eu.maiora.model.PuntiDistribuzioneRepositoryImpl
|
||||||
|
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.puntiDistribuzione(puntiDistribuzioneRepository: PuntiDistribuzioneRepositoryImpl){
|
||||||
|
route("/api/puntiDistribuzione"){
|
||||||
|
authenticate("auth-jwt") {
|
||||||
|
get(){
|
||||||
|
// Ottieni l'id del turno e il giorno dal percorso
|
||||||
|
val idTurno = call.parameters["idTurno"]
|
||||||
|
val giorno = call.parameters["giorno"]
|
||||||
|
|
||||||
|
if (idTurno == null) {
|
||||||
|
call.respondText("ID turno non valido", status = HttpStatusCode.BadRequest)
|
||||||
|
return@get
|
||||||
|
}
|
||||||
|
if (giorno == null) {
|
||||||
|
call.respondText("Giorno non valido", status = HttpStatusCode.BadRequest)
|
||||||
|
return@get
|
||||||
|
}
|
||||||
|
|
||||||
|
// Cerca i punti distribuzione per giorno e turno
|
||||||
|
val listaPuntiDistribuzione = puntiDistribuzioneRepository.puntiDistByGiornoIdTurno(giorno, idTurno.toLong())
|
||||||
|
|
||||||
|
|
||||||
|
if (listaPuntiDistribuzione != null) {
|
||||||
|
call.respond(listaPuntiDistribuzione)
|
||||||
|
} else {
|
||||||
|
call.respondText("Punti distribuzione non trovati", status = HttpStatusCode.NotFound)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
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}"
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
54
src/main/kotlin/eu/maiora/routes/SlotOrari.kt
Normal file
54
src/main/kotlin/eu/maiora/routes/SlotOrari.kt
Normal file
@ -0,0 +1,54 @@
|
|||||||
|
package eu.maiora.routes
|
||||||
|
|
||||||
|
import eu.maiora.model.SlotOrariRepositoryImpl
|
||||||
|
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.slotOrari(slotOrariRepository: SlotOrariRepositoryImpl){
|
||||||
|
route("/api/slotOrari"){
|
||||||
|
authenticate("auth-jwt") {
|
||||||
|
get(){
|
||||||
|
// Ottieni l'id del turno, il giorno, l'id della modalita e l'id del punto di distribuzione dal percorso
|
||||||
|
val idTurno = call.parameters["idTurno"]
|
||||||
|
val giorno = call.parameters["giorno"]
|
||||||
|
val idPuntoDistribuzione = call.parameters["idPuntoDistribuzione"]
|
||||||
|
val idModalita = call.parameters["idModalita"]
|
||||||
|
|
||||||
|
if (idTurno.isNullOrEmpty()) {
|
||||||
|
call.respondText("ID turno non valido o non presente nei parametri", status = HttpStatusCode.BadRequest)
|
||||||
|
return@get
|
||||||
|
}
|
||||||
|
if (idPuntoDistribuzione.isNullOrEmpty()) {
|
||||||
|
call.respondText("ID punto distribuzione non valido o non presente nei parametri", status = HttpStatusCode.BadRequest)
|
||||||
|
return@get
|
||||||
|
}
|
||||||
|
if (idModalita.isNullOrEmpty()) {
|
||||||
|
call.respondText("ID modalita non valido o non presente nei parametri", status = HttpStatusCode.BadRequest)
|
||||||
|
return@get
|
||||||
|
}
|
||||||
|
if (giorno.isNullOrEmpty()) {
|
||||||
|
call.respondText("Giorno non valido o non presente nei parametri", status = HttpStatusCode.BadRequest)
|
||||||
|
return@get
|
||||||
|
}
|
||||||
|
|
||||||
|
// Cerca gli slot orari per giorno, turno, punto distribuzione e modalita
|
||||||
|
val listaSlotOrari = slotOrariRepository.slotOrariByGiornoIdTurnoIdPuntoDistIdMod(giorno,
|
||||||
|
idTurno.toLong(),
|
||||||
|
idPuntoDistribuzione.toLong(),
|
||||||
|
idModalita.toLong())
|
||||||
|
|
||||||
|
|
||||||
|
if (listaSlotOrari != null) {
|
||||||
|
call.respond(listaSlotOrari)
|
||||||
|
} else {
|
||||||
|
call.respondText("Slot orari non trovati", status = HttpStatusCode.NotFound)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
35
src/main/kotlin/eu/maiora/routes/Tessere.kt
Normal file
35
src/main/kotlin/eu/maiora/routes/Tessere.kt
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
package eu.maiora.routes
|
||||||
|
|
||||||
|
import eu.maiora.model.TessereRepositoryImpl
|
||||||
|
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.tessere(tessereRepository: TessereRepositoryImpl){
|
||||||
|
route("/api/tessere"){
|
||||||
|
authenticate("auth-jwt") {
|
||||||
|
get("{cf}"){
|
||||||
|
// Ottieni il codice fiscale dal percorso
|
||||||
|
val cf = call.parameters["cf"]
|
||||||
|
|
||||||
|
if (cf == null) {
|
||||||
|
call.respondText("Codice fiscale non valido", status = HttpStatusCode.BadRequest)
|
||||||
|
return@get
|
||||||
|
}
|
||||||
|
|
||||||
|
// Cerca la tessera per codice fiscale
|
||||||
|
val tessera = tessereRepository.tesseraByCodiceFiscale(cf)
|
||||||
|
|
||||||
|
if (tessera != null) {
|
||||||
|
call.respond(tessera)
|
||||||
|
} else {
|
||||||
|
call.respondText("Tessera non trovata", status = HttpStatusCode.NotFound)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
54
src/main/kotlin/eu/maiora/routes/ValorePasti.kt
Normal file
54
src/main/kotlin/eu/maiora/routes/ValorePasti.kt
Normal file
@ -0,0 +1,54 @@
|
|||||||
|
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)
|
||||||
|
|
||||||
|
if(prezzo == "-1" && punti == "-1")
|
||||||
|
call.respondText("Prezzo e punti non trovati", status = HttpStatusCode.NotFound)
|
||||||
|
|
||||||
|
|
||||||
|
call.respond( ValorePasti(idTessera.toLong(),
|
||||||
|
idVassoio.toLong(), data,
|
||||||
|
prezzo.replace(',', '.').toDouble(),
|
||||||
|
punti.toInt()))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user