Class EventoService

java.lang.Object
com.modulink.Model.Eventi.EventoService

@Service public class EventoService extends Object
Service Layer per la gestione del ciclo di vita degli eventi aziendali.

Questa classe implementa la business logic per la creazione, il recupero e la manipolazione delle entità EventoEntity. Gestisce le transazioni database tramite l'annotazione Transactional, assicurando che operazioni complesse siano atomiche.

Integra la gestione delle eccezioni custom come EventoNotFound per fornire feedback semantici ai layer superiori.

Since:
1.2.0
Version:
1.8.2
Author:
Modulink Team
  • Field Details

  • Constructor Details

    • EventoService

      public EventoService(EventoRepository eventoRepository)
      Costruttore per Dependency Injection.
      Parameters:
      eventoRepository - Repository per l'accesso ai dati degli eventi.
      Since:
      1.2.0
  • Method Details

    • create

      @Transactional public EventoEntity create(EventoEntity eventoEntity)
      Persiste un nuovo evento nel database, gestendo la generazione manuale dell'ID.

      Questo metodo calcola il prossimo identificativo locale disponibile per l'azienda interrogando il repository per l'evento con ID massimo (EventoRepository.findMaxIdByAzienda(AziendaEntity)). Se non esistono eventi, l'ID parte da 0.

      L'operazione è transazionale per garantire che il calcolo e il salvataggio avvengano atomicamente.

      Parameters:
      eventoEntity - L'entità evento da salvare (senza ID impostato).
      Returns:
      L'entità evento persistita, completa di ID assegnato.
      Since:
      1.2.0
    • findAllByUtente

      @Transactional public List<EventoEntity> findAllByUtente(UtenteEntity utente)
      Recupera la lista di eventi pertinenti a un utente specifico.

      Aggrega sia gli eventi creati dall'utente che quelli a cui partecipa.

      Parameters:
      utente - L'utente per cui filtrare gli eventi.
      Returns:
      Lista di eventi correlati.
      Since:
      1.4.0
      See Also:
    • findByAzienda

      @Transactional public List<EventoEntity> findByAzienda(AziendaEntity aziendaEntity)
      Recupera tutti gli eventi associati a una determinata azienda.
      Parameters:
      aziendaEntity - L'azienda target.
      Returns:
      Lista di eventi dell'azienda.
      Since:
      1.2.0
    • findById

      public EventoEntity findById(EventoID eventoID) throws EventoNotFound
      Cerca un evento tramite la sua chiave primaria composta.

      Se l'evento non viene trovato, lancia un'eccezione runtime EventoNotFound.

      Parameters:
      eventoID - Oggetto chiave primaria composta (ID evento + ID azienda).
      Returns:
      L'entità trovata.
      Throws:
      EventoNotFound - Se l'evento non esiste nel DB.
      Since:
      1.2.0
    • update

      public void update(EventoEntity evento)
      Aggiorna i dati di un evento esistente.

      Funzionalmente equivalente a create(EventoEntity), ma semanticamente distinto per chiarezza del codice client.

      Parameters:
      evento - L'entità con i dati aggiornati.
      Since:
      1.3.0
    • deleteAllByAzienda

      @Transactional public void deleteAllByAzienda(AziendaEntity aziendaEntity)
      Rimuove tutti gli eventi associati a un'azienda.

      Esegue una cancellazione massiva e forza il flush del contesto di persistenza per rendere immediate le modifiche nel DB. Include logging a console per audit (livello INFO).

      Parameters:
      aziendaEntity - L'azienda i cui eventi devono essere eliminati.
      Since:
      1.5.0