Class PacchettoService
java.lang.Object
it.unicam.cs.ids2425.FilieraAgricola.service.PacchettoService
Service che gestisce il ciclo di vita dei Pacchetti (bundle).
Cosa fa: Fornisce metodi transazionali per creare, aggiornare, eliminare, recuperare e approvare pacchetti di prodotti.
Workflow e Logica:
- Creazione: Un distributore può creare un pacchetto
raggruppando più item.
Il pacchetto viene creato in stato di "bozza" o "in revisione" (tramite
ContentSubmission) e richiede l'approvazione di un Curatore per essere visibile nel catalogo pubblico. - Validazione: Si verifica che gli item inseriti nel pacchetto siano già stati approvati. Non è possibile vendere item non approvati all'interno di un pacchetto.
- Aggiornamento: Se un pacchetto approvato viene modificato, il suo stato torna a essere "non approvato" (o in revisione) per richiedere una nuova validazione delle modifiche.
- Sicurezza: Viene applicato un controllo di ownership
tramite
checkOwnershipOrAdminper garantire che solo il proprietario (o un admin) possa modificare i propri pacchetti.
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionaggiornaPacchetto(Long id, PacchettoRequest request) Aggiorna un pacchetto esistente.voidapprovaPacchetto(Long id) Approva un pacchetto, rendendolo pubblico.creaPacchetto(PacchettoRequest request) Crea un nuovo pacchetto e lo sottomette per l'approvazione.voideliminaPacchetto(Long id) Elimina un pacchetto dal sistema.Restituisce tutti i pacchetti approvati visibili nel marketplace.getByDistributore(Long distributoreId) Recupera i pacchetti creati da un determinato distributore.Recupera la lista dei pacchetti in attesa di approvazione per i Curatori.
-
Constructor Details
-
PacchettoService
public PacchettoService()
-
-
Method Details
-
creaPacchetto
Crea un nuovo pacchetto e lo sottomette per l'approvazione.Cosa succede:
- Recupera il distributore e verifica i permessi.
- Crea l'entità
Pacchettocon i dati di base (nome, descrizione, prezzo). - Genera una
ContentSubmissionassociata per gestire il workflow di approvazione. - Itera sugli ID degli item forniti, verificando che ciascuno sia
approvato,
e crea le associazioni
MarketplaceItemPacchetto.
- Parameters:
request- DTO con i dati del nuovo pacchetto.- Returns:
- DTO del pacchetto creato.
- Throws:
RuntimeException- Se il distributore o un item non esistono.IllegalStateException- Se si tenta di inserire un item non approvato.
-
getAllPacchetti
Restituisce tutti i pacchetti approvati visibili nel marketplace.- Returns:
- Lista di pacchetti approvati.
-
aggiornaPacchetto
Aggiorna un pacchetto esistente.Nota importante: Se il pacchetto era già approvato, la modifica ne invalida lo stato riportandolo in BOZZA (o IN_REVISIONE), richiedendo una nuova approvazione da parte di un Curatore.
- Parameters:
id- ID del pacchetto da aggiornare.request- Nuovi dati del pacchetto.- Returns:
- Il pacchetto aggiornato.
-
eliminaPacchetto
Elimina un pacchetto dal sistema.- Parameters:
id- ID del pacchetto.
-
getByDistributore
Recupera i pacchetti creati da un determinato distributore.- Parameters:
distributoreId- ID del distributore.- Returns:
- Lista dei suoi pacchetti.
-
getPacchettiDaApprovare
Recupera la lista dei pacchetti in attesa di approvazione per i Curatori.- Returns:
- Lista di pacchetti in stato IN_REVISIONE.
-
approvaPacchetto
Approva un pacchetto, rendendolo pubblico. Delega la logica alCurationService.- Parameters:
id- ID del pacchetto da approvare.
-