forked from maiora/backend-api
GET recupero punti distribuzione
This commit is contained in:
parent
3e0ae28708
commit
5c169dcfdd
@ -9,6 +9,7 @@ import org.jetbrains.exposed.dao.LongEntityClass
|
||||
import org.jetbrains.exposed.dao.id.EntityID
|
||||
import org.jetbrains.exposed.dao.id.IdTable
|
||||
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 java.time.format.DateTimeFormatter
|
||||
@ -76,6 +77,23 @@ object RicaricheTable : IdTable<Long>("ricariche_app"){
|
||||
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")
|
||||
val residenza = varchar("residenza", 255)
|
||||
}
|
||||
|
||||
class AccountsDAO(id: EntityID<Int>) :IntEntity(id) {
|
||||
companion object : IntEntityClass<AccountsDAO>(AccountsTable)
|
||||
|
||||
@ -137,6 +155,23 @@ class RicaricheDao(id: EntityID<Long>) :LongEntity(id){
|
||||
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(
|
||||
dao.id.value,
|
||||
@ -190,6 +225,18 @@ fun composizioniDaoToModel(dao: ComposizioniDao) = Composizioni(
|
||||
dao.quantita
|
||||
)
|
||||
|
||||
fun puntiDistribuzioneDaoToModel(dao: SlotPrenotabiliDao) :PuntiDistribuzione{
|
||||
return PuntiDistribuzione(
|
||||
dao.id.value,
|
||||
dao.idPuntoDistribuzione,
|
||||
dao.puntoDistribuzione,
|
||||
dao.idPuntoCassa,
|
||||
dao.puntoCassa,
|
||||
dao.idModalita,
|
||||
dao.modalitaPrenotazione
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
suspend fun <T> suspendTransaction(block: Transaction.() -> T): T =
|
||||
newSuspendedTransaction(Dispatchers.IO, statement = block)
|
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
|
||||
|
||||
}
|
||||
}
|
@ -18,5 +18,6 @@ fun Application.configureRouting() {
|
||||
composizioni(ComposizioniRepositoryImpl())
|
||||
valorePasti(ValorePastiRepositoryImpl())
|
||||
ricariche(RicaricheRepositoryImpl())
|
||||
puntiDistribuzione(PuntiDistribuzioneRepositoryImpl())
|
||||
}
|
||||
}
|
||||
|
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)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user