forked from maiora/backend-api
/GET prenotazioni #15
@ -1,8 +1,10 @@
|
|||||||
package eu.maiora.db
|
package eu.maiora.db
|
||||||
|
|
||||||
|
|
||||||
import eu.maiora.model.*
|
import eu.maiora.model.*
|
||||||
import kotlinx.coroutines.Dispatchers
|
import kotlinx.coroutines.Dispatchers
|
||||||
import kotlinx.datetime.toKotlinLocalDateTime
|
import kotlinx.datetime.toKotlinLocalDateTime
|
||||||
|
import kotlinx.datetime.toKotlinLocalDate
|
||||||
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.LongEntity
|
||||||
@ -142,7 +144,15 @@ object ViewPrenotazioniPastiTable : IdTable<Long>("view_prenotazioni_pasti"){
|
|||||||
val idPrenotazione = long("id_prenotazione")
|
val idPrenotazione = long("id_prenotazione")
|
||||||
val idStato = long("id_stato")
|
val idStato = long("id_stato")
|
||||||
val stato = varchar("stato", 255)
|
val stato = varchar("stato", 255)
|
||||||
|
val idTessera = long("id_tessera")
|
||||||
|
val idSlotPuntoCassa = long("id_slot_punto_cassa")
|
||||||
|
val giorno = date("giorno")
|
||||||
|
val turno = varchar("turno", 255)
|
||||||
|
val dataInizio = datetime("data_inizio")
|
||||||
val dataLimiteCancellazione = datetime("data_limite_cancellazione")
|
val dataLimiteCancellazione = datetime("data_limite_cancellazione")
|
||||||
|
val idVassoio = long("id_vassoio")
|
||||||
|
val codiceRistocloud = varchar("codice_ristocloud", 255).nullable()
|
||||||
|
val importoPagato = double("importo_pagato")
|
||||||
}
|
}
|
||||||
|
|
||||||
class AccountsDAO(id: EntityID<Int>) :IntEntity(id) {
|
class AccountsDAO(id: EntityID<Int>) :IntEntity(id) {
|
||||||
@ -274,8 +284,16 @@ class ViewPrenotazioniPastiDao(id: EntityID<Long>) :LongEntity(id){
|
|||||||
|
|
||||||
val idPrenotazione by ViewPrenotazioniPastiTable.idPrenotazione
|
val idPrenotazione by ViewPrenotazioniPastiTable.idPrenotazione
|
||||||
val idStato by ViewPrenotazioniPastiTable.idStato
|
val idStato by ViewPrenotazioniPastiTable.idStato
|
||||||
|
val idTessera by ViewPrenotazioniPastiTable.idTessera
|
||||||
|
val idSlotPuntoCassa by ViewPrenotazioniPastiTable.idSlotPuntoCassa
|
||||||
val stato by ViewPrenotazioniPastiTable.stato
|
val stato by ViewPrenotazioniPastiTable.stato
|
||||||
|
val giorno by ViewPrenotazioniPastiTable.giorno
|
||||||
|
val turno by ViewPrenotazioniPastiTable.turno
|
||||||
|
val dataInizio by ViewPrenotazioniPastiTable.dataInizio
|
||||||
val dataLimiteCancellazione by ViewPrenotazioniPastiTable.dataLimiteCancellazione
|
val dataLimiteCancellazione by ViewPrenotazioniPastiTable.dataLimiteCancellazione
|
||||||
|
val idVassoio by ViewPrenotazioniPastiTable.idVassoio
|
||||||
|
val codiceRistocloud by ViewPrenotazioniPastiTable.codiceRistocloud
|
||||||
|
val importoPagato by ViewPrenotazioniPastiTable.importoPagato
|
||||||
}
|
}
|
||||||
|
|
||||||
fun accountsDaoToModel(dao: AccountsDAO) = Accounts(
|
fun accountsDaoToModel(dao: AccountsDAO) = Accounts(
|
||||||
@ -426,7 +444,16 @@ fun viewPrenotazioniPastiDaoToModel(dao: ViewPrenotazioniPastiDao) : ViewPrenota
|
|||||||
dao.idPrenotazione,
|
dao.idPrenotazione,
|
||||||
dao.idStato,
|
dao.idStato,
|
||||||
dao.stato,
|
dao.stato,
|
||||||
dao.dataLimiteCancellazione.toKotlinLocalDateTime()
|
dao.idTessera,
|
||||||
|
dao.idSlotPuntoCassa,
|
||||||
|
dao.giorno.toKotlinLocalDate(),
|
||||||
|
dao.turno,
|
||||||
|
dao.dataInizio.toKotlinLocalDateTime(),
|
||||||
|
dao.dataLimiteCancellazione.toKotlinLocalDateTime(),
|
||||||
|
dao.idVassoio,
|
||||||
|
dao.codiceRistocloud,
|
||||||
|
dao.importoPagato,
|
||||||
|
null
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
package eu.maiora.model
|
package eu.maiora.model
|
||||||
|
|
||||||
|
import kotlinx.datetime.LocalDate
|
||||||
import kotlinx.datetime.LocalDateTime
|
import kotlinx.datetime.LocalDateTime
|
||||||
import kotlinx.serialization.Serializable
|
import kotlinx.serialization.Serializable
|
||||||
|
|
||||||
@ -9,5 +10,15 @@ data class ViewPrenotazioniPasti(
|
|||||||
val idPrenotazione: Long,
|
val idPrenotazione: Long,
|
||||||
val idStato: Long,
|
val idStato: Long,
|
||||||
val stato: String,
|
val stato: String,
|
||||||
val dataLimiteCancellazione: LocalDateTime
|
val idTessera: Long,
|
||||||
|
val idSlotPuntoCassa: Long,
|
||||||
|
val giorno: LocalDate,
|
||||||
|
val turno: String,
|
||||||
|
val dataInizio: LocalDateTime,
|
||||||
|
val dataLimiteCancellazione: LocalDateTime,
|
||||||
|
val idVassoio: Long,
|
||||||
|
val codiceRistocloud: String? = null,
|
||||||
|
val importoPagato: Double,
|
||||||
|
var listaProdottiPrenotati: List<PrenotazioniPastiDettaglio>? = null
|
||||||
|
|
||||||
)
|
)
|
@ -2,4 +2,5 @@ package eu.maiora.model
|
|||||||
|
|
||||||
interface ViewPrenotazioniPastiRepository {
|
interface ViewPrenotazioniPastiRepository {
|
||||||
suspend fun prenotazioniPastiById(id : Long): ViewPrenotazioniPasti
|
suspend fun prenotazioniPastiById(id : Long): ViewPrenotazioniPasti
|
||||||
|
suspend fun prenotazioniPastiByIdTessera(idTessera : Long): List<ViewPrenotazioniPasti>
|
||||||
}
|
}
|
@ -12,4 +12,13 @@ class ViewPrenotazioniPastiRepositoryImpl : ViewPrenotazioniPastiRepository {
|
|||||||
.first() //prendo solo il primo record, dato che ci sono tanti record quanti prodotti prenotati
|
.first() //prendo solo il primo record, dato che ci sono tanti record quanti prodotti prenotati
|
||||||
.let { viewPrenotazioniPastiDaoToModel(it) } // Converte il DAO in un oggetto ViewPrenotazioniPasti
|
.let { viewPrenotazioniPastiDaoToModel(it) } // Converte il DAO in un oggetto ViewPrenotazioniPasti
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override suspend fun prenotazioniPastiByIdTessera(idTessera : Long): List<ViewPrenotazioniPasti> = suspendTransaction {
|
||||||
|
// Cerca la lista di prenotazioni
|
||||||
|
ViewPrenotazioniPastiDao.find { ViewPrenotazioniPastiTable.idTessera eq idTessera }
|
||||||
|
.orderBy(ViewPrenotazioniPastiTable.giorno to SortOrder.DESC)
|
||||||
|
.toList() // Restituisce la lista delle prenotazioni
|
||||||
|
.map { viewPrenotazioniPastiDaoToModel(it) } // Converte il DAO in un oggetto Movimenti
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
@ -22,7 +22,10 @@ fun Application.configureRouting() {
|
|||||||
slotOrari(SlotOrariRepositoryImpl())
|
slotOrari(SlotOrariRepositoryImpl())
|
||||||
prodottiPrenotabili(ProdottiPrenotabiliRepositoryImpl())
|
prodottiPrenotabili(ProdottiPrenotabiliRepositoryImpl())
|
||||||
residenze(ResidenzeRepositoryImpl())
|
residenze(ResidenzeRepositoryImpl())
|
||||||
prenotazioni(PrenotazioniPastiRepositoryImpl(), SlotOrariRepositoryImpl(), PrenotazioniPastiDettaglioRepositoryImpl())
|
prenotazioni(PrenotazioniPastiRepositoryImpl(),
|
||||||
|
SlotOrariRepositoryImpl(),
|
||||||
|
PrenotazioniPastiDettaglioRepositoryImpl(),
|
||||||
|
ViewPrenotazioniPastiRepositoryImpl())
|
||||||
annullaPrenotazioni(ViewPrenotazioniPastiRepositoryImpl(), PrenotazioniPastiDettaglioRepositoryImpl())
|
annullaPrenotazioni(ViewPrenotazioniPastiRepositoryImpl(), PrenotazioniPastiDettaglioRepositoryImpl())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -11,9 +11,30 @@ import io.ktor.server.routing.*
|
|||||||
|
|
||||||
fun Route.prenotazioni(prenotazioniPastiRepository: PrenotazioniPastiRepository,
|
fun Route.prenotazioni(prenotazioniPastiRepository: PrenotazioniPastiRepository,
|
||||||
slotOrariRepository: SlotOrariRepository,
|
slotOrariRepository: SlotOrariRepository,
|
||||||
prenotazioniPastiDettaglioRepository : PrenotazioniPastiDettaglioRepository){
|
prenotazioniPastiDettaglioRepository : PrenotazioniPastiDettaglioRepository,
|
||||||
|
viewPrenotazioniPastiRepositoryImpl: ViewPrenotazioniPastiRepositoryImpl){
|
||||||
route("/api/prenotazioni"){
|
route("/api/prenotazioni"){
|
||||||
authenticate("auth-jwt") {
|
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 le prenotazioni per la tessera indicata
|
||||||
|
val listaPrenotazioniPasti = viewPrenotazioniPastiRepositoryImpl.prenotazioniPastiByIdTessera(idTessera.toLong())
|
||||||
|
|
||||||
|
listaPrenotazioniPasti.forEach{ el ->
|
||||||
|
el.listaProdottiPrenotati =
|
||||||
|
prenotazioniPastiDettaglioRepository.listaDettagliByIdPrenotazione(el.idPrenotazione.toLong())
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
call.respond(listaPrenotazioniPasti)
|
||||||
|
}
|
||||||
post(){
|
post(){
|
||||||
try{
|
try{
|
||||||
val listaDettagliInseriti = mutableListOf<PrenotazioniPastiDettaglio>()
|
val listaDettagliInseriti = mutableListOf<PrenotazioniPastiDettaglio>()
|
||||||
|
Loading…
Reference in New Issue
Block a user