entity AuditLog { entitaTipo TipoEntita entitaId Long azione AzioneAudit dettagli String ipAddress String createdAt Instant } entity Disponibilita { giornoSettimana GiornoSettimana dataSpecifica LocalDate oraInizio Instant oraFine Instant orarioInizio String orarioFine String tipo TipoDisponibilita note String } entity Notifica { tipoCanale TipoCanaleNotifica tipoEvento TipoEventoNotifica messaggio String inviata Boolean inviataAt Instant errore String createdAt Instant } entity Prenotazione { oraInizio Instant oraFine Instant stato StatoPrenotazione motivoEvento String numeroPartecipanti Integer noteUtente String } entity Conferma { motivoConferma String tipoConferma TipoConferma } entity Struttura { nome String descrizione String indirizzo String capienzaMax Integer attiva Boolean fotoUrl String createdAt Instant updatedAt Instant } entity UtenteApp { username String required unique email String required telefono String ruolo Ruolo required attivo Boolean required nome String cognome String luogoNascita String dataNascita String residente String societa String sede String codfiscale String telefonoSoc String emailSoc String } entity Liberatoria { accettata Instant } entity ModelloLiberatoria { nome String testo String documento Blob validoDal Instant validoAl Instant } entity Messaggio { spedito Instant testo String letto Instant } enum TipoEntita { PRENOTAZIONE, CONFERMA } enum TipoConferma { CONFERMATA, RIFIUTATA } enum AzioneAudit { CREATE, UPDATE, DELETE, CONFIRM, REJECT } enum GiornoSettimana { LUNEDI, MARTEDI, MERCOLEDI, GIOVEDI, VENERDI, SABATO, DOMENICA } enum TipoDisponibilita { DISPONIBILE, CHIUSURA } enum TipoCanaleNotifica { EMAIL, WHATSAPP, SISTEMA } enum TipoEventoNotifica { RICHIESTA_CREATA, PRENOTAZIONE_CONFERMATA, PRENOTAZIONE_RIFIUTATA, REMINDER, ANNULLAMENTO } enum StatoPrenotazione { RICHIESTA, CONFERMATA, RIFIUTATA, ANNULLATA } enum Ruolo { USER, INCARICATO, ADMIN } relationship OneToOne { Prenotazione to Conferma UtenteApp{internalUser(login)} to User with builtInEntity } relationship ManyToOne { AuditLog{utente(username)} to UtenteApp Disponibilita{struttura(nome)} to Struttura{disponibilita} Notifica{conferma} to Conferma Prenotazione{utente(username)} to UtenteApp Prenotazione{struttura(nome)} to Struttura Conferma{confermataDa(username)} to UtenteApp Messaggio{utente(username)} to UtenteApp ModelloLiberatoria{struttura} to Struttura{moduliLiberatorie} Liberatoria{utente(username)} to UtenteApp{liberatorie} Liberatoria{modelloLiberatoria} to ModelloLiberatoria } dto AuditLog, Disponibilita, Notifica, Prenotazione, Conferma, Struttura, UtenteApp, Messaggio, Liberatoria, ModelloLiberatoria with mapstruct paginate AuditLog, Notifica, Prenotazione, Struttura, Conferma with pagination paginate Disponibilita with infinite-scroll service AuditLog, Conferma, Disponibilita, Notifica, Prenotazione, Struttura, UtenteApp, Messaggio, Liberatoria, ModelloLiberatoria with serviceImpl search AuditLog, Conferma, Disponibilita, Notifica, Prenotazione, Struttura, UtenteApp with no filter AuditLog, Notifica, Prenotazione, Struttura, Conferma