# 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.
