Merge pull request '0002671-endpoint-puntiDistribuzione-gestione-parametro-idModalita' (#26) from 0002671-endpoint-puntiDistribuzione-gestione-parametro-idModalita into dev

Reviewed-on: #26
This commit is contained in:
Francesco Di Sciascio 2025-10-20 12:06:06 +00:00
commit 5b08abcbbf
4 changed files with 24 additions and 6 deletions

View File

@ -479,10 +479,20 @@ fun composizioniDaoToModel(dao: ComposizioniDao) = Composizioni(
)
fun puntiDistribuzioneDaoToModel(dao: SlotPrenotabiliDao): PuntiDistribuzione {
//se la modalità è delivery, mostrare il nome della residenza e non del punto di distribuzione
var nomePdApp: String
if(dao.idModalita == 3L){
nomePdApp = dao.residenza.toString()
}
else{
nomePdApp = dao.puntoDistribuzione
}
return PuntiDistribuzione(
dao.id.value,
dao.idPuntoDistribuzione,
dao.puntoDistribuzione,
nomePdApp,
dao.idPuntoCassa,
dao.puntoCassa,
dao.idModalita,

View File

@ -1,5 +1,5 @@
package eu.maiora.model
interface PuntiDistribuzioneRepository {
suspend fun puntiDistByGiornoIdTurno(giorno : String, idTurno : Long): List<PuntiDistribuzione>?
suspend fun puntiDistByGiornoIdTurnoIdModalita(giorno : String, idTurno : Long, idModalita : Long): List<PuntiDistribuzione>?
}

View File

@ -8,12 +8,14 @@ import java.time.LocalDateTime
import java.time.format.DateTimeFormatter
class PuntiDistribuzioneRepositoryImpl : PuntiDistribuzioneRepository {
override suspend fun puntiDistByGiornoIdTurno(giorno : String, idTurno : Long): List<PuntiDistribuzione> = suspendTransaction {
override suspend fun puntiDistByGiornoIdTurnoIdModalita(giorno : String, idTurno : Long, idModalita : 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)}
SlotPrenotabiliDao.find { (SlotPrenotabiliTable.giorno eq formattedDate) and
(SlotPrenotabiliTable.idTurno eq idTurno) and
(SlotPrenotabiliTable.idModalita eq idModalita)}
.toList() // Restituisce la lista degli slot prenotabili da cui ricavare i punti distribuzione
.map { puntiDistribuzioneDaoToModel(it) } // Converte il DAO in un oggetto PuntiDistribuzione

View File

@ -15,21 +15,27 @@ fun Route.puntiDistribuzione(puntiDistribuzioneRepository: PuntiDistribuzioneRep
// Ottieni l'id del turno e il giorno dal percorso
val idTurno = call.parameters["idTurno"]
val giorno = call.parameters["giorno"]
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 (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 punti distribuzione per giorno e turno
val listaPuntiDistribuzione = puntiDistribuzioneRepository.puntiDistByGiornoIdTurno(giorno, idTurno.toLong())
val listaPuntiDistribuzione = puntiDistribuzioneRepository.puntiDistByGiornoIdTurnoIdModalita(giorno, idTurno.toLong(), idModalita.toLong())
if (listaPuntiDistribuzione != null) {
if (listaPuntiDistribuzione.isNotEmpty()) {
call.respond(listaPuntiDistribuzione)
} else {
call.respondText("Punti distribuzione non trovati", status = HttpStatusCode.NotFound)