Some checks failed
Build and Publish / build (push) Failing after 48s
- Add Claude Code documentation (CLAUDE.md) with project overview and development commands - Add specialized agent configurations (spring-boot-engineer, vue3-frontend-engineer) - Add feature specifications (check liberatorie, configurazione disponibilità, profilo utente) - Enhance Conferma entity with codiceQrLink and presenzaConfermata fields - Update Liquibase changelog and test data for Conferma changes - Update frontend Conferma component and model with new tracking fields 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
27 lines
3.2 KiB
Markdown
27 lines
3.2 KiB
Markdown
# Feature configurazione disponibilità struttura
|
|
|
|
## Contesto
|
|
|
|
Questa feature dell'applicazione permette agli utenti i ruoli di INCARICATO o ADMIN di accedere alla funzionalità di configurazione delle disponibilità (sia in apertura che in chiusura) di una determinata struttura. Grazie a queste "disponibilità" inserite sarà possibile, insieme alle prenotazioni già accettate per una determinata struttura, determinare l'ammissibilità di una certa prenotazione per suddetta struttura.
|
|
|
|
## Descrizione feature
|
|
|
|
L'utente loggato al quale è associato il ruolo di INCARICATO oppure di ADMIN ha la possibilità di accedere alla lista strutture inserite a sistema (come quella del componente @src/main/webapp/app/entities/struttura/struttura.vue). Nella tabella html che espone la lista va aggiunto un pulsante all'interno del "<div class="btn-group"></div>" con una icona font-awesome di un orologio che permetta di accedere alla maschera di visualizzazione e inserimento delle disponibilità della struttura indicata nella riga.
|
|
La maschera sarà organizzata con in alto una sezione compatta con i dati della struttura (quelli del modello al file @src/main/webapp/app/shared/model/struttura.model.ts) non editabili. Al di sotto una sezione che contenga il form per l'inserimento di una disponibilità per la suddetta struttura. Il form (che tratterà i dati del modello @src/main/webapp/app/shared/model/disponibilita.model.ts) dovrà anch'esso essere organizzato per sezioni:
|
|
* la prima sezione conterrà il dato TipoDisponibilità (visualizzato attraverso una select box prevalorizzata al dato CHIUSURA)
|
|
* la seconda sezione conterrà i dati "oraInizio" e "oraFine" visualizzati sulla stessa riga. Questi determinano l'intervallo di temporale di validità della disponibilità che si sta inserendo
|
|
* la terza sezione conterrà il campo "dataSpecifica" che indica una precisa collocazione temporale di una giornata per la quale si sta configurando la disponibilità (es: 25/12/2025). Accettiamo che possa essere vuoto.
|
|
* la quarta sezione conterrà il dato "giornoSettimana" presentato con una select box senza valore prevalorizzato (accettiamo che possa essere vuoto)
|
|
* infine una sezione per un campo "note"
|
|
In fondo al form due pulsanti "Inserisci disponibilità" e "Annulla".
|
|
|
|
Come regola, è possibile eseguire il submit del form se i campi "TipoDisponibilita" e "oraInizio" e "oraFine" sono valorizzati. Inotre deve essere valorizzato in maniera alternativa (o uno o l'altro, non entrambi) o il campo "dataSpecifica" o la select box "giornoSettimana".
|
|
Al submit del form viene inviata la chiamata all'endpoint di back-end per il salvataggio della dispobilitità per la struttura indicata.
|
|
|
|
Va realizzato anche un endopoint nell'API del back-end che permetta di eseguire una chiamata passando come parametri:
|
|
* l'id di una struttura
|
|
* data e ora di inizio
|
|
* data e ora di fine
|
|
(che saranno determinate nel form di inserimento nuova prenotazione)
|
|
La logica di business recupererà per la struttura le prenotazioni già accettate e le disponibilità inserite valutando se le stesse date indicate nella chiamata non si sovrappongono ad una prenotazione accettata o cadono in una indisponibilità (disponibilità di tipo CHIUSURA) indicata per la struttura.
|