GET prodotti prenotabili
This commit is contained in:
parent
3995d993e5
commit
213d7fdd74
@ -94,6 +94,23 @@ object SlotPrenotabiliTable : IdTable<Long>("view_slot_prenotabili"){
|
|||||||
val residenza = varchar("residenza", 255).nullable()
|
val residenza = varchar("residenza", 255).nullable()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
object ProdottiPrenotabiliTable : IdTable<Long>("view_prodotti_prenotabili"){
|
||||||
|
override val id = long("id").entityId()
|
||||||
|
val giorno = date("giorno")
|
||||||
|
val idPuntoDistribuzione = long("id_punto_distribuzione")
|
||||||
|
val puntoDistribuzione = varchar("punto_distribuzione", 255)
|
||||||
|
val idTurno = long("id_turno")
|
||||||
|
val turno = varchar("turno", 255)
|
||||||
|
val idProdotto = long("id_prodotto")
|
||||||
|
val prodotto = varchar("prodotto", 255)
|
||||||
|
val codiceProdotto = varchar("codice_prodotto", 255)
|
||||||
|
val descrizioneProdotto = varchar("descrizione_prodotto", 255)
|
||||||
|
val idCategoria = long("id_categoria")
|
||||||
|
val categoria = varchar("categoria", 255)
|
||||||
|
val idModalita = long("id_modalita")
|
||||||
|
val modalitaPrenotazione = varchar("modalita_prenotazione", 255)
|
||||||
|
}
|
||||||
|
|
||||||
class AccountsDAO(id: EntityID<Int>) :IntEntity(id) {
|
class AccountsDAO(id: EntityID<Int>) :IntEntity(id) {
|
||||||
companion object : IntEntityClass<AccountsDAO>(AccountsTable)
|
companion object : IntEntityClass<AccountsDAO>(AccountsTable)
|
||||||
|
|
||||||
@ -173,6 +190,24 @@ class SlotPrenotabiliDao(id: EntityID<Long>) :LongEntity(id) {
|
|||||||
var residenza by SlotPrenotabiliTable.residenza
|
var residenza by SlotPrenotabiliTable.residenza
|
||||||
}
|
}
|
||||||
|
|
||||||
|
class ProdottiPrenotabiliDao(id: EntityID<Long>) :LongEntity(id) {
|
||||||
|
companion object : LongEntityClass<ProdottiPrenotabiliDao>(ProdottiPrenotabiliTable)
|
||||||
|
|
||||||
|
var giorno by ProdottiPrenotabiliTable.giorno
|
||||||
|
var idPuntoDistribuzione by ProdottiPrenotabiliTable.idPuntoDistribuzione
|
||||||
|
var puntoDistribuzione by ProdottiPrenotabiliTable.puntoDistribuzione
|
||||||
|
var idTurno by ProdottiPrenotabiliTable.idTurno
|
||||||
|
var turno by ProdottiPrenotabiliTable.turno
|
||||||
|
var idProdotto by ProdottiPrenotabiliTable.idProdotto
|
||||||
|
var prodotto by ProdottiPrenotabiliTable.prodotto
|
||||||
|
var codiceProdotto by ProdottiPrenotabiliTable.codiceProdotto
|
||||||
|
var descrizioneProdotto by ProdottiPrenotabiliTable.descrizioneProdotto
|
||||||
|
var idCategoria by ProdottiPrenotabiliTable.idCategoria
|
||||||
|
var categoria by ProdottiPrenotabiliTable.categoria
|
||||||
|
var idModalita by ProdottiPrenotabiliTable.idModalita
|
||||||
|
var modalitaPrenotazione by ProdottiPrenotabiliTable.modalitaPrenotazione
|
||||||
|
}
|
||||||
|
|
||||||
fun accountsDaoToModel(dao: AccountsDAO) = Accounts(
|
fun accountsDaoToModel(dao: AccountsDAO) = Accounts(
|
||||||
dao.id.value,
|
dao.id.value,
|
||||||
dao.username,
|
dao.username,
|
||||||
@ -262,6 +297,28 @@ fun slotOrariDaoToModel(dao: SlotPrenotabiliDao) :SlotOrari{
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun prodottiPrenotabiliDaoToModel(dao: ProdottiPrenotabiliDao) :ProdottiPrenotabili{
|
||||||
|
val formatterGiorno = DateTimeFormatter.ofPattern("ddMMyyyy")
|
||||||
|
val formattedGiorno = dao.giorno.format(formatterGiorno)
|
||||||
|
|
||||||
|
return ProdottiPrenotabili(
|
||||||
|
dao.id.value,
|
||||||
|
formattedGiorno,
|
||||||
|
dao.idPuntoDistribuzione,
|
||||||
|
dao.puntoDistribuzione,
|
||||||
|
dao.idTurno,
|
||||||
|
dao.turno,
|
||||||
|
dao.idProdotto,
|
||||||
|
dao.prodotto,
|
||||||
|
dao.codiceProdotto,
|
||||||
|
dao.descrizioneProdotto,
|
||||||
|
dao.idCategoria,
|
||||||
|
dao.categoria,
|
||||||
|
dao.idModalita,
|
||||||
|
dao.modalitaPrenotazione
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
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)
|
21
src/main/kotlin/eu/maiora/model/ProdottiPrenotabili.kt
Normal file
21
src/main/kotlin/eu/maiora/model/ProdottiPrenotabili.kt
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
package eu.maiora.model
|
||||||
|
|
||||||
|
import kotlinx.serialization.Serializable
|
||||||
|
|
||||||
|
@Serializable
|
||||||
|
data class ProdottiPrenotabili(
|
||||||
|
val id: Long,
|
||||||
|
val giorno : String,
|
||||||
|
val idPuntoDistribuzione : Long,
|
||||||
|
val puntoDistribuzione : String,
|
||||||
|
val idTurno : Long,
|
||||||
|
val turno : String,
|
||||||
|
val idProdotto : Long,
|
||||||
|
val prodotto : String,
|
||||||
|
val codiceProdotto : String,
|
||||||
|
val descrizioneProdotto : String,
|
||||||
|
val idCategoria : Long,
|
||||||
|
val categoria : String,
|
||||||
|
val idModalita : Long,
|
||||||
|
val modalitaPrenotazione : String
|
||||||
|
)
|
@ -0,0 +1,8 @@
|
|||||||
|
package eu.maiora.model
|
||||||
|
|
||||||
|
interface ProdottiPrenotabiliRepository {
|
||||||
|
suspend fun prodottiPrenotabiliByGiornoIdTurnoIdPuntoDistIdMod(giorno : String,
|
||||||
|
idTurno : Long,
|
||||||
|
idPuntoDistribuzione : Long,
|
||||||
|
idModalita : Long): List<ProdottiPrenotabili>?
|
||||||
|
}
|
@ -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 ProdottiPrenotabiliRepositoryImpl : ProdottiPrenotabiliRepository {
|
||||||
|
override suspend fun prodottiPrenotabiliByGiornoIdTurnoIdPuntoDistIdMod(giorno : String,
|
||||||
|
idTurno : Long,
|
||||||
|
idPuntoDistribuzione : Long,
|
||||||
|
idModalita : Long): List<ProdottiPrenotabili> = suspendTransaction {
|
||||||
|
// Cerca la lista di prodotti prenotabili
|
||||||
|
val formatter = DateTimeFormatter.ofPattern("ddMMyyyy")
|
||||||
|
val formattedDate = LocalDate.parse(giorno, formatter)
|
||||||
|
|
||||||
|
ProdottiPrenotabiliDao.find { (ProdottiPrenotabiliTable.giorno eq formattedDate) and
|
||||||
|
(ProdottiPrenotabiliTable.idTurno eq idTurno) and
|
||||||
|
(ProdottiPrenotabiliTable.idPuntoDistribuzione eq idPuntoDistribuzione) and
|
||||||
|
(ProdottiPrenotabiliTable.idModalita eq idModalita)}
|
||||||
|
.toList() // Restituisce la lista dei prodotti prenotabili
|
||||||
|
.map { prodottiPrenotabiliDaoToModel(it) } // Converte il DAO in un oggetto ProdottiPrenotabili
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
@ -20,5 +20,6 @@ fun Application.configureRouting() {
|
|||||||
ricariche(RicaricheRepositoryImpl())
|
ricariche(RicaricheRepositoryImpl())
|
||||||
puntiDistribuzione(PuntiDistribuzioneRepositoryImpl())
|
puntiDistribuzione(PuntiDistribuzioneRepositoryImpl())
|
||||||
slotOrari(SlotOrariRepositoryImpl())
|
slotOrari(SlotOrariRepositoryImpl())
|
||||||
|
prodottiPrenotabili(ProdottiPrenotabiliRepositoryImpl())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
55
src/main/kotlin/eu/maiora/routes/ProdottiPrenotabili.kt
Normal file
55
src/main/kotlin/eu/maiora/routes/ProdottiPrenotabili.kt
Normal file
@ -0,0 +1,55 @@
|
|||||||
|
package eu.maiora.routes
|
||||||
|
|
||||||
|
import eu.maiora.model.ProdottiPrenotabiliRepositoryImpl
|
||||||
|
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.prodottiPrenotabili(prodottiPrenotabiliRepository: ProdottiPrenotabiliRepositoryImpl){
|
||||||
|
route("/api/prodottiPrenotabili"){
|
||||||
|
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 i prodotti prenotabili per giorno, turno, punto distribuzione e modalita
|
||||||
|
val listaProdottiPrenotabili = prodottiPrenotabiliRepository.prodottiPrenotabiliByGiornoIdTurnoIdPuntoDistIdMod(giorno,
|
||||||
|
idTurno.toLong(),
|
||||||
|
idPuntoDistribuzione.toLong(),
|
||||||
|
idModalita.toLong())
|
||||||
|
|
||||||
|
|
||||||
|
if (listaProdottiPrenotabili != null) {
|
||||||
|
call.respond(listaProdottiPrenotabili)
|
||||||
|
} else {
|
||||||
|
call.respondText("Prodotti prenotabili non trovati", status = HttpStatusCode.NotFound)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user