Class AttivazioneService
java.lang.Object
com.modulink.Model.Relazioni.Attivazione.AttivazioneService
Service Layer responsabile della gestione del ciclo di vita delle attivazioni dei moduli.
Gestisce l'attivazione predefinita per i nuovi utenti, l'acquisto di nuovi moduli (con relativa assegnazione dei permessi al responsabile) e la dismissione (vendita) dei moduli con pulizia delle dipendenze. Integra la gestione della cache per garantire performance ottimali.
- Since:
- 1.2.0
- Version:
- 3.1.5
- Author:
- Modulink Team
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate final AttivazioneRepositoryprivate final AziendaRepositoryprivate final ModuloRepositoryprivate final PertinenzaRepositoryprivate final RuoloService -
Constructor Summary
ConstructorsConstructorDescriptionAttivazioneService(AttivazioneRepository attivazioneRepository, ModuloRepository moduloRepository, PertinenzaRepository pertinenzaRepository, RuoloService ruoloService, AziendaRepository aziendaRepository) Costruttore per l'iniezione delle dipendenze. -
Method Summary
Modifier and TypeMethodDescriptionvoidattivazioneDefault(AziendaEntity aziendaEntity) Esegue l'attivazione dei moduli predefiniti (Core) per una nuova azienda.getAllPurchased(AziendaEntity aziendaEntity) Restituisce la lista dei moduli "Premium" acquistati dall'azienda (escludendo quelli core).getAttivazioneById(AttivazioneID attivazioneID) Recupera un'attivazione specifica tramite il suo ID composto.getNotPurchased(AziendaEntity aziendaEntity) Restituisce la lista dei moduli disponibili per l'acquisto da parte di un'azienda.booleanpurchaseModulo(AziendaEntity azienda, int moduloId) Gestisce la logica di acquisto di un nuovo modulo.booleansellModulo(AziendaEntity azienda, int moduloId) Gestisce la dismissione (vendita/rimozione) di un modulo.
-
Field Details
-
attivazioneRepository
-
moduloRepository
-
pertinenzaRepository
-
ruoloService
-
aziendaRepository
-
-
Constructor Details
-
AttivazioneService
public AttivazioneService(AttivazioneRepository attivazioneRepository, ModuloRepository moduloRepository, PertinenzaRepository pertinenzaRepository, RuoloService ruoloService, AziendaRepository aziendaRepository) Costruttore per l'iniezione delle dipendenze.- Parameters:
attivazioneRepository- Repository delle attivazioni.moduloRepository- Repository dei moduli.pertinenzaRepository- Repository delle pertinenze (permessi).ruoloService- Service per la gestione ruoli.aziendaRepository- Repository delle aziende.- Since:
- 1.2.0
-
-
Method Details
-
getAttivazioneById
Recupera un'attivazione specifica tramite il suo ID composto.- Parameters:
attivazioneID- L'ID composto dell'attivazione.- Returns:
- L'entità
AttivazioneEntitytrovata. - Throws:
IllegalArgumentException- se l'attivazione non viene trovata.- Since:
- 1.2.0
-
attivazioneDefault
Esegue l'attivazione dei moduli predefiniti (Core) per una nuova azienda.Viene chiamata tipicamente durante la fase di registrazione di un nuovo tenant. I moduli con ID 0, 1, 2, 3 e 9999 vengono assegnati automaticamente.
- Parameters:
aziendaEntity- L'azienda appena creata.- Since:
- 1.2.0
-
getNotPurchased
Restituisce la lista dei moduli disponibili per l'acquisto da parte di un'azienda.- Parameters:
aziendaEntity- L'azienda cliente.- Returns:
- Lista di moduli non ancora attivi.
- Since:
- 1.3.0
-
getAllPurchased
Restituisce la lista dei moduli "Premium" acquistati dall'azienda (escludendo quelli core).- Parameters:
aziendaEntity- L'azienda cliente.- Returns:
- Lista di moduli acquistati (filtrata dai moduli di sistema).
- Since:
- 1.3.0
-
purchaseModulo
@Transactional @CacheEvict(value={"moduliByUtente","moduloAccess","modulo"}, allEntries=true) public boolean purchaseModulo(AziendaEntity azienda, int moduloId) Gestisce la logica di acquisto di un nuovo modulo.Esegue i seguenti passaggi in transazione:
- Verifica l'esistenza e la visibilità del modulo.
- Controlla che non sia già attivo.
- Crea e salva l'entità
AttivazioneEntity. - Assegna automaticamente i permessi di gestione (Pertinenza) al Ruolo Responsabile dell'azienda.
- Parameters:
azienda- L'azienda acquirente.moduloId- L'ID del modulo da acquistare.- Returns:
- true se l'operazione ha successo, false altrimenti.
- Since:
- 2.0.0
-
sellModulo
@Transactional @CacheEvict(value={"moduliByUtente","moduloAccess","modulo"}, allEntries=true) public boolean sellModulo(AziendaEntity azienda, int moduloId) Gestisce la dismissione (vendita/rimozione) di un modulo.Esegue una pulizia profonda per mantenere la coerenza dei dati:
- Verifica che il modulo sia effettivamente attivo.
- Rimuove tutte le
PertinenzaEntity(permessi) associate a quel modulo per quell'azienda. - Rimuove l'attivazione stessa.
TransientObjectException.- Parameters:
azienda- L'azienda che dismette il modulo.moduloId- L'ID del modulo da rimuovere.- Returns:
- true se l'operazione ha successo, false altrimenti.
- Since:
- 2.1.0
-