Class GestoreService

java.lang.Object
it.unicam.cs.ids2425.FilieraAgricola.service.GestoreService

@Service public class GestoreService extends Object
Service che gestisce le operazioni riservate al Gestore della piattaforma. Si occupa principalmente dell'accreditamento degli utenti (Produttori, Trasformatori, Distributori) e dell'abilitazione dei ruoli base (Curatori, Animatori, ecc.).
  • Constructor Details

    • GestoreService

      public GestoreService()
  • Method Details

    • accreditaRuoloBase

      @Transactional public void accreditaRuoloBase(Long userId, ERole ruoloNome)
      Abilita un utente che possiede un ruolo "base" (es. CURATORE, ANIMATORE, GESTORE). Questo metodo verifica che l'utente abbia il ruolo richiesto e lo imposta come abilitato.
      Parameters:
      userId - L'identificativo univoco dell'utente da accreditare.
      ruoloNome - Il ruolo che si intende abilitare (non deve essere un ruolo di filiera come PRODUTTORE, ecc.).
      Throws:
      IllegalArgumentException - se il ruolo specificato richiede un flusso di accredito specifico.
      RuntimeException - se l'utente o il ruolo non vengono trovati.
      IllegalStateException - se l'utente non possiede il ruolo specificato.
    • accreditaProduttore

      @Transactional public void accreditaProduttore(Long userId, AccreditaProduttoreRequest request)
      Esegue l'accredito completo di un PRODUTTORE. Questa operazione comprende:
      1. Recupero dell'utente e del suo profilo base.
      2. Creazione e approvazione automatica del FilieraPoint associato (di tipo AZIENDA_AGRICOLA).
      3. Creazione del profilo specifico (ActorProfile_Produttore) con i dati aziendali forniti.
      4. Abilitazione dell'utente nel sistema.
      Parameters:
      userId - L'identificativo dell'utente.
      request - Oggetto contenente i dati per l'accreditamento (dati azienda, punto filiera, ecc.).
      Throws:
      RuntimeException - se l'utente o il profilo base non vengono trovati.
    • accreditaTrasformatore

      @Transactional public void accreditaTrasformatore(Long userId, AccreditaTrasformatoreRequest request)
      Esegue l'accredito completo di un TRASFORMATORE. Simile all'accredito produttore, ma crea un FilieraPoint di tipo LABORATORIO_TRASFORMAZIONE e un profilo ActorProfile_Trasformatore.
      Parameters:
      userId - L'identificativo dell'utente.
      request - Dati per l'accreditamento del trasformatore.
      Throws:
      RuntimeException - se l'utente o il profilo vengono meno.
    • accreditaDistributore

      @Transactional public void accreditaDistributore(Long userId, AccreditaDistributoreRequest request)
      Esegue l'accredito completo di un DISTRIBUTORE. Crea un FilieraPoint di tipo PUNTO_VENDITA e un profilo ActorProfile_Distributore.
      Parameters:
      userId - L'identificativo dell'utente.
      request - Dati per l'accreditamento del distributore (inclusa logistica).
      Throws:
      RuntimeException - se l'utente o il profilo mancano.